powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Поиск в базе по Guid
25 сообщений из 71, страница 2 из 3
Поиск в базе по Guid
    #39148568
mishanya3624
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо уже, за интересный диалог:)
...
Рейтинг: 0 / 0
Поиск в базе по Guid
    #39148575
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mishanya3624Shocker.ProТак что преобразовывай строку в guid, а потом форматируй обратно
Единственный вариант?Это вариант исправить имеющийся недостаток алгоритма.

То есть в алгоритме есть системная ошибка, которая заключается в том, что значение, которое будет распознано с помощью TryParse не обязательно может быть использовано для формирования sql запроса. В данном случае некорректно будет работать bit, real и uniqueidentifier. C datetime тоже будут серьезные проблемы, в частности могут быть перепутаны месяц и число. Фактически, можно рассчитывать, что только int отработает нормально.
...
Рейтинг: 0 / 0
Поиск в базе по Guid
    #39148576
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что касается изначальной проблемы - в чем вопрос? Поставь точку останова и посмотри, какой sql-запрос сформировался к выполнению
...
Рейтинг: 0 / 0
Поиск в базе по Guid
    #39148579
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mishanya3624AxeleronКстати, великолепный образец дыры в безопасности SQL-injection.
Поясните, если не сложно.очень упрощенно говоря, можно в текстбоксе написать
' drop database
и текущая база будет удалена (при достаточности прав). Естественно, можно "наделать" и других "делов".
...
Рейтинг: 0 / 0
Поиск в базе по Guid
    #39148581
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AxeleronShocker.Proпропущено...
бобер, выдыхай!
Так может говорить только то кто не наступал на эти грабли (пока).чооо? буквы это всего лишь hex-представление байт, пофиг какой регистр.
но если он у тебя хранится как строка, то ты сам себе злобный буратино.
...
Рейтинг: 0 / 0
Поиск в базе по Guid
    #39148643
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyAxeleronпропущено...

Так может говорить только то кто не наступал на эти грабли (пока).чооо? буквы это всего лишь hex-представление байт, пофиг какой регистр.
но если он у тебя хранится как строка, то ты сам себе злобный буратино.
Ступай в свою стихию - на ПТ
...
Рейтинг: 0 / 0
Поиск в базе по Guid
    #39148644
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy,
или читай выше, что ли...
...
Рейтинг: 0 / 0
Поиск в базе по Guid
    #39148709
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AxeleronСтупай в свою стихию - на ПТ
слив засчитан
...
Рейтинг: 0 / 0
Поиск в базе по Guid
    #39149067
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Как всегда грабли у тех, кто собирает строку запроса, а не использует запрос с параметрами.
Если параметру явно указан тип SqlDbType.UniqueIdentifier, то присваивать ему можно любое строковое представления GUID
...
Рейтинг: 0 / 0
Поиск в базе по Guid
    #39149118
mishanya3624
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Promishanya3624пропущено...

Единственный вариант?Это вариант исправить имеющийся недостаток алгоритма.

То есть в алгоритме есть системная ошибка, которая заключается в том, что значение, которое будет распознано с помощью TryParse не обязательно может быть использовано для формирования sql запроса. В данном случае некорректно будет работать bit, real и uniqueidentifier. C datetime тоже будут серьезные проблемы, в частности могут быть перепутаны месяц и число. Фактически, можно рассчитывать, что только int отработает нормально.

Где косячит мой копипастный мозг:)?
Код: 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.
  private string parseinput(string str)
    {
        
        Boolean boolvalue;
        Int32 intvalue;
        float realvalue;
        DateTime datevalue = new DateTime();
        Guid guidvalue = Guid.NewGuid();
        // Create an array of string representations of the GUID.
        string[] stringGuids = { guidvalue.ToString("B"),
                               guidvalue.ToString("D"),
                               guidvalue.ToString("X") };

        // Parse each string representation.
        Guid newGuid;
        foreach (var stringGuid in stringGuids)
        {
            if (Guid.TryParse(stringGuid, out newGuid))
                str += String.Format("Converted {0} to a Guid\n", stringGuid);
            else
                str += String.Format("Unable to convert {0} to a Guid\n",
                                  stringGuid);
        }                            
       
        if (Boolean.TryParse(str, out boolvalue))
            return "bit";
        else if (Int32.TryParse(str, out intvalue))
            return "int";
        else if (float.TryParse(str, out realvalue))
            return "real";
        else if (DateTime.TryParse(str, out datevalue))
            return "datetime";
        else if (Guid.TryParse(str, out guidvalue))
            return "Guid";

        else
            return "nvarchar";
       
    }
...
Рейтинг: 0 / 0
Поиск в базе по Guid
    #39149126
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вопрос в чем?
...
Рейтинг: 0 / 0
Поиск в базе по Guid
    #39149127
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Shocker.ProВопрос в чем?
ТС при изучении языка пока не дошел до пункта "Запрос с параметрами"
...
Рейтинг: 0 / 0
Поиск в базе по Guid
    #39149128
mishanya3624
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,

Shocker.ProТак что преобразовывай строку в guid, а потом форматируй обратно


В преобразовании, что-то не так делаю...
...
Рейтинг: 0 / 0
Поиск в базе по Guid
    #39149129
mishanya3624
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cat2,

Это факт!
А параметры указываются после cn.Open();, или все равно?
...
Рейтинг: 0 / 0
Поиск в базе по Guid
    #39149133
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cat2Shocker.ProВопрос в чем?
ТС при изучении языка пока не дошел до пункта "Запрос с параметрами"В данном случае это хорошее упражнение, чтобы осознать, что к чему. А то можно и запрос с параметрами не изучать, а сразу к EF перейти, не понимая основ.


mishanya3624В преобразовании, что-то не так делаю...Я вообще сейчас не понимаю, что вы делаете. Нужно отделить этапы:
1) преобразовать из изначальной строки в конкретный тип
2) преобразовать из конкретного типа в строку ДЛЯ запроса
обращаю внимание, что изначальная строка и конечная строка совпадать НЕ ОБЯЗАНЫ.
...
Рейтинг: 0 / 0
Поиск в базе по Guid
    #39149135
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а по большому счету, я вообще не понимаю, зачем вам эти попытки определить тип исходя из строки. У вас есть конкретный столбец, в котором будет идти поиск. Этот столбец конкретного определенного типа. Так зачем пытаться искать guid в строке с целым значением? все равно он найден не будет. Опять же чревато косяками - пользователь может ввести пару цифр для поиска в текстовой строке, а оно опознается как int и что дальше?
...
Рейтинг: 0 / 0
Поиск в базе по Guid
    #39149211
mishanya3624
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Proа по большому счету, я вообще не понимаю, зачем вам эти попытки определить тип исходя из строки. У вас есть конкретный столбец, в котором будет идти поиск. Этот столбец конкретного определенного типа. Так зачем пытаться искать guid в строке с целым значением? все равно он найден не будет. Опять же чревато косяками - пользователь может ввести пару цифр для поиска в текстовой строке, а оно опознается как int и что дальше?
пользователю будут известны значения guid целиком, он должен копипастом просто найти данные по guid'у.

А вкратце, где параметры указываются, при коннекте, или при создании коннекта, или перед запросом?
...
Рейтинг: 0 / 0
Поиск в базе по Guid
    #39149218
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mishanya3624Shocker.Proа по большому счету, я вообще не понимаю, зачем вам эти попытки определить тип исходя из строки. У вас есть конкретный столбец, в котором будет идти поиск. Этот столбец конкретного определенного типа. Так зачем пытаться искать guid в строке с целым значением? все равно он найден не будет. Опять же чревато косяками - пользователь может ввести пару цифр для поиска в текстовой строке, а оно опознается как int и что дальше?
пользователю будут известны значения guid целиком, он должен копипастом просто найти данные по guid'у.ваш ответ с моим вопросом ну никак не связан. зачем пользователю искать гуид в столбце, в котором его нет - неясно.
...
Рейтинг: 0 / 0
Поиск в базе по Guid
    #39149223
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Поиск в базе по Guid
    #39149228
mishanya3624
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Promishanya3624пропущено...

пользователю будут известны значения guid целиком, он должен копипастом просто найти данные по guid'у.ваш ответ с моим вопросом ну никак не связан. зачем пользователю искать гуид в столбце, в котором его нет - неясно.
почему guid нет то, их там море в сотнях таблицах
...
Рейтинг: 0 / 0
Поиск в базе по Guid
    #39149230
mishanya3624
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProПро параметры
https://msdn.microsoft.com/ru-ru/library/cc280502(v=sql.120).aspx
нет, как в sql работать с параметрами, я в курсе:)
я не пойму где параметризироваться в коде c#, в каком месте мне эти параметры прописывать?
...
Рейтинг: 0 / 0
Поиск в базе по Guid
    #39149416
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mishanya3624Shocker.Proпропущено...
ваш ответ с моим вопросом ну никак не связан. зачем пользователю искать гуид в столбце, в котором его нет - неясно.
почему guid нет то, их там море в сотнях таблицахтогда зачем вы пытаетесь обнаружить int, float и т.п.?

Перечитайте внимательно мою мысль. Еще раз - вы выбираете из списка столбец, в котором будет осуществляться поиск. Этот столбец имеет какой-то определенный тип данных. Вы же пытаетесь отформатировать значение в запросе не в соответствии с типом данных столбца , а полагаясь автоматическое определения типа данных, которое пользователь ввел в текстбокс для поиска. Это полная ерунда.

Само по себе автоматическое определение тоже не обязательно право. Как я уже говорил выше, если пользователь ввел 123 в поле поиска, это не обязательно означает, что он хочет искать число в числовом поле, он может хотеть искать фрагмент текста в текстовом поле.
...
Рейтинг: 0 / 0
Поиск в базе по Guid
    #39149417
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mishanya3624Shocker.ProПро параметры
https://msdn.microsoft.com/ru-ru/library/cc280502(v=sql.120).aspx
нет, как в sql работать с параметрами, я в курсе:)
я не пойму где параметризироваться в коде c#, в каком месте мне эти параметры прописывать?в sql-запрос
...
Рейтинг: 0 / 0
Поиск в базе по Guid
    #39149463
Фотография pation
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mishanya3624Shocker.ProПро параметры
https://msdn.microsoft.com/ru-ru/library/cc280502(v=sql.120).aspx
нет, как в sql работать с параметрами, я в курсе:)
я не пойму где параметризироваться в коде c#, в каком месте мне эти параметры прописывать?
жесть
вся проблема в нежелании использовать параметры
...
Рейтинг: 0 / 0
Поиск в базе по Guid
    #39149487
mishanya3624
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
:)
я понимаю , что параметры надо использовать в запросе, но до этого момента, я же должен их как-то обозначить, дать им какое-то значение, вот это где надо прописывать, сам запрос я составлю, имея параметры.

Shocker.Pro
Дело в том, что поиск будет вестись не только по guid, который будет вводиться полностью, но и необходимо чтобы он искал и по словам (ФИО, название организации итд итп) поэтому необходимо автоопределение, чтобы он понимал, ввел guid ищет по guid ввел текст ищет только по тексту ввел число(сумма тех, или иных денег) ищет это число.

pationжесть
вся проблема в нежелании использовать параметры
Да есть желание, надо только малость логики кода понять, где эти параметры определять и в каком виде, я так понял необходимо обозначать так:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
myConnection.Open();
SqlCommand myCommand = new SqlCommand("your Procedure Name", myConnection);
myCommand.CommandType = CommandType.StoredProcedure;
myCommand.Parameters.Add("@orgid", SqlDbType.UniqueIdentifier).Value = orgid;
myCommand.Parameters.Add("@statid", SqlDbType.UniqueIdentifier).Value = statid;
myCommand.Parameters.Add("@read", SqlDbType.Bit).Value = read;
myCommand.Parameters.Add("@write", SqlDbType.Bit).Value = write;
// Mark the Command as a SPROC

myCommand.ExecuteNonQuery();

myCommand.Dispose();
myConnection.Close();
...
Рейтинг: 0 / 0
25 сообщений из 71, страница 2 из 3
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Поиск в базе по Guid
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]