|
Поиск в базе по Guid
|
|||
---|---|---|---|
#18+
Приветствую! Есть поиск по базе, все работает, кроме Guid , вот часть кода по поиску: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61.
куда копать, пробовал в запросе и like использовать тоже не находит... ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2016, 19:12 |
|
Поиск в базе по Guid
|
|||
---|---|---|---|
#18+
guid может распарситься из совершенно разных вариантов строковых представлений а вот в sql-запрос его надо засовывать в строго определенном формате Так что преобразовывай строку в guid, а потом форматируй обратно P.S. Вообще, почему бы методу parseinput возвращать не string, а object ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2016, 19:32 |
|
Поиск в базе по Guid
|
|||
---|---|---|---|
#18+
mishanya3624, надо смотреть не различается ли регистр Guid в БД и в запросе. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2016, 19:34 |
|
Поиск в базе по Guid
|
|||
---|---|---|---|
#18+
Shocker.ProТак что преобразовывай строку в guid, а потом форматируй обратно Это не нужно, uniqueidentifier в sql запросе передается как строка, обернутся одинарными кавычками. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2016, 19:35 |
|
Поиск в базе по Guid
|
|||
---|---|---|---|
#18+
Код: c# 1. 2. 3. 4. 5. 6. 7. 8.
Кстати, великолепный образец дыры в безопасности SQL-injection. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2016, 19:37 |
|
Поиск в базе по Guid
|
|||
---|---|---|---|
#18+
AxeleronЭто не нужно, uniqueidentifier в sql запросе передается как строка, обернутся одинарными кавычками.да, но распарсить ты его можешь, например, из сплошного текста, а вот в sql передавать нужно обязательно в виде '3391568C-1246-48E3-82A7-71302176E392' (по крайней мере в mssql) ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2016, 19:51 |
|
Поиск в базе по Guid
|
|||
---|---|---|---|
#18+
Axeleronmishanya3624, надо смотреть не различается ли регистр Guid в БД и в запросе.бобер, выдыхай! ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2016, 19:52 |
|
Поиск в базе по Guid
|
|||
---|---|---|---|
#18+
Shocker.ProAxeleronmishanya3624, надо смотреть не различается ли регистр Guid в БД и в запросе.бобер, выдыхай! Так может говорить только то кто не наступал на эти грабли (пока). ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2016, 19:54 |
|
Поиск в базе по Guid
|
|||
---|---|---|---|
#18+
Shocker.ProAxeleronЭто не нужно, uniqueidentifier в sql запросе передается как строка, обернутся одинарными кавычками.да, но распарсить ты его можешь, например, из сплошного текста, а вот в sql передавать нужно обязательно в виде '3391568C-1246-48E3-82A7-71302176E392' (по крайней мере в mssql) Если Guid уже в правильном строковом формате, ничего не нужно ни парсить, ни конвертить. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2016, 19:55 |
|
Поиск в базе по Guid
|
|||
---|---|---|---|
#18+
AxeleronShocker.Proпропущено... да, но распарсить ты его можешь, например, из сплошного текста, а вот в sql передавать нужно обязательно в виде '3391568C-1246-48E3-82A7-71302176E392' (по крайней мере в mssql) Если Guid уже в правильном строковом формате, ничего не нужно ни парсить, ни конвертить.а если в неправильном? ты код автора-то почитай, не ленись - пользователь может задать giud в виде 3391568C124648E382A771302176E392 - он определится как giud, но sql его не съест ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2016, 19:59 |
|
Поиск в базе по Guid
|
|||
---|---|---|---|
#18+
AxeleronКстати, великолепный образец дыры в безопасности SQL-injection.ну там вообще косяков полно. Например для float косяк с десятичной точкой. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2016, 20:01 |
|
Поиск в базе по Guid
|
|||
---|---|---|---|
#18+
AxeleronShocker.Proпропущено... бобер, выдыхай! Так может говорить только то кто не наступал на эти грабли (пока).ок, тогда расскажи, что за грабли. Ибо еще ни разу не сталкивался с ситуацией, где регистр букв в шестнадцатеричных числах имеет значение ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2016, 20:03 |
|
Поиск в базе по Guid
|
|||
---|---|---|---|
#18+
Shocker.Proа если в неправильном? ты код автора-то почитай, не ленись - пользователь может задать giud в виде 3391568C124648E382A771302176E392 - он определится как giud, но sql его не съест Это в условии задачи не сказано, не нужно фантазировать. По умолчанию, считаем, что в текстбоксе он выглядит как 3391568C-1246-48E3-82A7-71302176E392. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2016, 20:05 |
|
Поиск в базе по Guid
|
|||
---|---|---|---|
#18+
Shocker.ProAxeleronпропущено... Так может говорить только то кто не наступал на эти грабли (пока).ок, тогда расскажи, что за грабли. Ибо еще ни разу не сталкивался с ситуацией, где регистр букв в шестнадцатеричных числах имеет значение Грабли могут быть в том, что если поиск будет произведен по Guid '3391568C-1246-48E3-82A7-71302176E392', а в базе он будет записан как '3391568c-1246-48e3-82a7-71302176e392', то запись найдена не будет. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2016, 20:06 |
|
Поиск в базе по Guid
|
|||
---|---|---|---|
#18+
AxeleronShocker.Proа если в неправильном? ты код автора-то почитай, не ленись - пользователь может задать giud в виде 3391568C124648E382A771302176E392 - он определится как giud, но sql его не съест Это в условии задачи не сказано, не нужно фантазировать. По умолчанию, считаем, что в текстбоксе он выглядит как 3391568C-1246-48E3-82A7-71302176E392.так у автора же не работает. Одна из причин может быть как раз написание guid-а сплошным текстом. То есть я пытаюсь ответить автору на изначальный вопрос. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2016, 20:07 |
|
Поиск в базе по Guid
|
|||
---|---|---|---|
#18+
AxeleronShocker.Proпропущено... ок, тогда расскажи, что за грабли. Ибо еще ни разу не сталкивался с ситуацией, где регистр букв в шестнадцатеричных числах имеет значение Грабли могут быть в том, что если поиск будет произведен по Guid '3391568C-1246-48E3-82A7-71302176E392', а в базе он будет записан как '3391568c-1246-48e3-82a7-71302176e392', то запись найдена не будет. Если в настройках самой базы будет установлен Case-sensitive. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2016, 20:07 |
|
Поиск в базе по Guid
|
|||
---|---|---|---|
#18+
Shocker.ProAxeleronпропущено... Это в условии задачи не сказано, не нужно фантазировать. По умолчанию, считаем, что в текстбоксе он выглядит как 3391568C-1246-48E3-82A7-71302176E392.так у автора же не работает. Одна из причин может быть как раз написание guid-а сплошным текстом. То есть я пытаюсь ответить автору на изначальный вопрос. Все может быть, дождемся автора :) ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2016, 20:08 |
|
Поиск в базе по Guid
|
|||
---|---|---|---|
#18+
AxeleronГрабли могут быть в том, что если поиск будет произведен по Guid '3391568C-1246-48E3-82A7-71302176E392', а в базе он будет записан как '3391568c-1246-48e3-82a7-71302176e392', то запись найдена не будет.ты меня пугаешь, ты чего курил? в базе никаких БУКАВАК различного регистра нет, uniqueidentifier - это бинарный формат ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2016, 20:10 |
|
Поиск в базе по Guid
|
|||
---|---|---|---|
#18+
Shocker.Pro, ты мне расскажи, а в строке запроса where ты тоже передаешь Guid (тип CLR, аналогом которому в SQL Server является uniqueidentifier) или все-таки ты преобразуешь в string для передачи? У меня была проблема с БД хостера, которая содержала uniqueidentifier'ы в lower case, и когда я в строке поиска передавал строку в upper case, строка не находилась. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2016, 20:16 |
|
Поиск в базе по Guid
|
|||
---|---|---|---|
#18+
Axeleronкоторая содержала uniqueidentifier'ы в lower caseтвои слова справедливы только в одном случае - если гуиды банально хранились в строковом поле. Поле типа uniqueidentifier бинарное - там по определению не может быть понятия lower case или upper case. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2016, 20:20 |
|
Поиск в базе по Guid
|
|||
---|---|---|---|
#18+
Shocker.Pro, что я хочу сказать, что guid - это 128-битное значение и регистр буковок не имеет значения, но у меня от чего-то была такая хрень с хостерской БД. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2016, 20:23 |
|
Поиск в базе по Guid
|
|||
---|---|---|---|
#18+
То есть guid в базе был в нижнем регистре, и когда я искал по этому же guid в верхнем регистре, ничего не находилось, когда передавал строку guid в нижнем, находилось. поле было типа uniqueidentifier. Тупо, дико, но как ты объяснишь это? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2016, 20:25 |
|
Поиск в базе по Guid
|
|||
---|---|---|---|
#18+
AxeleronТо есть guid в базе был в нижнем регистре, и когда я искал по этому же guid в верхнем регистре, ничего не находилось, когда передавал строку guid в нижнем, находилось. поле было типа uniqueidentifier. Тупо, дико, но как ты объяснишь это?как вариант - запрос был построен таким образом, что до сравнения guid неявно преобразовывался в строку, а потом уже сравнивался как строка ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2016, 20:27 |
|
Поиск в базе по Guid
|
|||
---|---|---|---|
#18+
Shocker.ProAxeleronТо есть guid в базе был в нижнем регистре, и когда я искал по этому же guid в верхнем регистре, ничего не находилось, когда передавал строку guid в нижнем, находилось. поле было типа uniqueidentifier. Тупо, дико, но как ты объяснишь это?как вариант - запрос был построен таким образом, что до сравнения guid неявно преобразовывался в строку, а потом уже сравнивался как строка Не помню, кажется, в ХП проблема с where запросом была. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2016, 20:30 |
|
Поиск в базе по Guid
|
|||
---|---|---|---|
#18+
Axeleronmishanya3624, надо смотреть не различается ли регистр Guid в БД и в запросе. Регистр одинаковый AxeleronКстати, великолепный образец дыры в безопасности SQL-injection. Поясните, если не сложно. Shocker.Proа если в неправильном? ты код автора-то почитай, не ленись - пользователь может задать giud в виде 3391568C124648E382A771302176E392 - он определится как giud, но sql его не съест GUid в правильном формате uniq база - mssql Shocker.ProТак что преобразовывай строку в guid, а потом форматируй обратно Единственный вариант? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2016, 22:39 |
|
|
start [/forum/topic.php?fid=20&fpage=68&tid=1400859]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
48ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
64ms |
get tp. blocked users: |
2ms |
others: | 294ms |
total: | 455ms |
0 / 0 |