powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Поиск в базе по Guid
21 сообщений из 71, страница 3 из 3
Поиск в базе по Guid
    #39149501
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mishanya3624ввел guid ищет по guid ввел текст ищет только по текстуГДЕ происходит этот поиск? в столбце типа int?
Я не видел в вашем коде автоматического определения столбца поиска в зависимости от типа введенных данных.
...
Рейтинг: 0 / 0
Поиск в базе по Guid
    #39149508
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mishanya3624Да есть желание, надо только малость логики кода понять, где эти параметры определять и в каком виде, я так понял необходимо обозначать так:вам не нужна хранимая процедура, если вы используете запрос. Я дал ссылку, см. раздел "Использование параметров в предложениях WHERE"
...
Рейтинг: 0 / 0
Поиск в базе по Guid
    #39149509
Фотография pation
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Поиск в базе по Guid
    #39151895
mishanya3624
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подскажите, что не так делаю? тестовое подключение по выборке по guid , пишет, что не может преобразовать значение из string в guid...
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
     private void button1_Click(object sender, EventArgs e)
        {
            SqlConnection cn = new SqlConnection("Data Source=ADMIN;Initial Catalog=AdventureWorks2012;Persist Security Info=True;User ID=sa;Password=Password11");
            SqlCommand cmd = new SqlCommand("select * from Sales.Store where rowguid = @id", cn);
         
            textBox1.Text = Guid.NewGuid().ToString();
            cmd.Parameters.Add("@id", SqlDbType.UniqueIdentifier).Value = textBox1.Text;               
                
            cn.Open();
            SqlDataAdapter da = new SqlDataAdapter(cmd);
        
            DataSet ds = new DataSet();
            da.Fill(ds);

            dataGridView1.DataSource = ds.Tables[0];
            cn.Close();
        }
...
Рейтинг: 0 / 0
Поиск в базе по Guid
    #39152075
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а куда потерялось теперь Guid.Parse?
...
Рейтинг: 0 / 0
Поиск в базе по Guid
    #39152341
mishanya3624
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,

Код: 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.
private string parseinput(string str)
        {
            Boolean boolvalue;
            Int32 intvalue;
            float realvalue;
            DateTime datevalue = new DateTime();
            Guid guid = new Guid();                             

            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 guid))
                return "Guid";
            else
                return "nvarchar";

        }

        private void button1_Click(object sender, EventArgs e)
        {
            string datatype = parseinput(textBox1.Text.ToString());
            SqlConnection cn = new SqlConnection("Data Source=ADMIN;Initial Catalog=AdventureWorks2012;Persist Security Info=True;User ID=sa;Password=Password11");
            if (datatype == "Guid")
            {
                SqlCommand cmd = new SqlCommand("select * from Sales.Store where rowguid = @id", cn);

                cmd.Parameters.Add("@id", SqlDbType.UniqueIdentifier).Value = textBox1.Text;

                cn.Open();
                SqlDataAdapter da = new SqlDataAdapter(cmd);
                DataSet ds = new DataSet();
                da.Fill(ds);
                dataGridView1.DataSource = ds.Tables[0];
                cn.Close();
            }
        }
    
    
...
Рейтинг: 0 / 0
Поиск в базе по Guid
    #39152366
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и что изменилось?
Код: c#
1.
 cmd.Parameters.Add("@id", SqlDbType.UniqueIdentifier).Value = textBox1.Text;
...
Рейтинг: 0 / 0
Поиск в базе по Guid
    #39152486
mishanya3624
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,

Спасибо тебе ГУРУ!:) Все получилось, ищет по всему, кроме datetime, что не так(уже и по разному парсить пробовал, никак не хочет)?
Код: 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.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
     private string parseinput(string str)
        {
            Boolean boolvalue;
            Int32 intvalue;
            float realvalue;
            DateTime datevalue = new DateTime();
            Guid guid = new Guid();
                            

            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 guid))
                return "Guid";
            else
                return "nvarchar";

        }

        private void button1_Click(object sender, EventArgs e)
        {
            string datatype = parseinput(textBox1.Text.ToString());
            SqlConnection cn = new SqlConnection("Data Source=ADMIN;Initial Catalog=AdventureWorks2012;Persist Security Info=True;User ID=sa;Password=Password11");
            if (datatype == "Guid")
            {
                SqlCommand cmd = new SqlCommand("select * from Sales.Store where rowguid = @id", cn);
                cmd.Parameters.Add("@id", SqlDbType.UniqueIdentifier).Value = Guid.Parse(textBox1.Text); 
                cn.Open();
                SqlDataAdapter da = new SqlDataAdapter(cmd);
                DataSet ds = new DataSet();
                da.Fill(ds);
                dataGridView1.DataSource = ds.Tables[0];
                cn.Close();
            }
            if (datatype == "int")
            {
                SqlCommand cmd = new SqlCommand("select * from Sales.Store where SalesPersonID = @id", cn);
                cmd.Parameters.Add("@id", SqlDbType.Int).Value = Int32.Parse(textBox1.Text);
                cn.Open();
                SqlDataAdapter da = new SqlDataAdapter(cmd);
                DataSet ds = new DataSet();
                da.Fill(ds);
                dataGridView1.DataSource = ds.Tables[0];
                cn.Close();
            }
            if(datatype == "nvarchar")
            {
                SqlCommand cmd = new SqlCommand("select * from Sales.Store where Name LIKE '%'  + @name + '%'", cn);
                cmd.Parameters.Add("@name", SqlDbType.NVarChar, 50).Value = textBox1.Text.ToString();
                cn.Open();
                SqlDataAdapter da = new SqlDataAdapter(cmd);
                DataSet ds = new DataSet();
                da.Fill(ds);
                dataGridView1.DataSource = ds.Tables[0];
                cn.Close();
            }
            if (datatype == "datetime")
            {
                SqlCommand cmd = new SqlCommand("select * from Sales.Store where ModifiedDate = @date", cn);
                cmd.Parameters.Add("@date", SqlDbType.DateTime).Value = DateTime.Parse(textBox1.Text);
                SqlDataAdapter da = new SqlDataAdapter(cmd);
                DataSet ds = new DataSet();
                da.Fill(ds);
                dataGridView1.DataSource = ds.Tables[0];
                cn.Close();
            }
     
        }

     
...
Рейтинг: 0 / 0
Поиск в базе по Guid
    #39152509
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mishanya3624Все получилосьЯ всё еще не вижу смысла парсить значение два раза. Лишнее телодвижение и повторяющийся код в разных методах.

Повторяющийся код в if-ах нужно вынести в отдельный метод.

mishanya3624кроме datetime, что не так(уже и по разному парсить пробовал, никак не хочет)документацию по Datetime.Parse в зубы и вперед
...
Рейтинг: 0 / 0
Поиск в базе по Guid
    #39152510
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mishanya3624ищет по всему, кроме datetime, что не так(уже и по разному парсить пробовал, никак не хочет)?
Задать правильную культуру (формат даты) на парсинге в DateTime.
...
Рейтинг: 0 / 0
Поиск в базе по Guid
    #39152654
mishanya3624
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: c#
1.
cmd.Parameters.Add("@date", SqlDbType.DateTime).Value = DateTime.ParseExact(textBox1.Text, "dd.MM.yyyy HH:mm:ss", CultureInfo.InvariantCulture);


Вроде такой формат, но все равно пустую строку возвращает... формат даты такой - 13.10.2008 11:15:07
...
Рейтинг: 0 / 0
Поиск в базе по Guid
    #39152659
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mishanya3624все равно пустую строку возвращаетзапрос пустую строку возвращает?

А вы уверены, что в базе есть даты, совпадающие с точностью до миллисекунды с указанной?
Как вообще дата попадает в поле базы? Если через datetime() (sql) или через DateTime.Now (c#), то таким образом вы нужную строку не найдете, так как дата в этом случае с миллисекундами.
...
Рейтинг: 0 / 0
Поиск в базе по Guid
    #39152670
mishanya3624
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,

это все с тестовой Adventures2012,
дата там при создании автоматом ставится getdate ,пробовал и где есть миллисекунды и где нет...
В общем плюнул на парсинг даты и сделал старым добрым запросом, но все же интересно, почему не парсился...
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
 SqlCommand cmd = new SqlCommand("select * from Sales.Store where CONVERT(DATETIME, CONVERT(VARCHAR, ModifiedDate, 105))  = @date", cn);

                cmd.Parameters.Add("@date", SqlDbType.DateTime).Value = DateTime.Parse(textBox1.Text);                  
                SqlDataAdapter da = new SqlDataAdapter(cmd);
                DataSet ds = new DataSet();
                da.Fill(ds);
                dataGridView1.DataSource = ds.Tables[0];
                cn.Close();
...
Рейтинг: 0 / 0
Поиск в базе по Guid
    #39152671
mishanya3624
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Promishanya3624Все получилосьЯ всё еще не вижу смысла парсить значение два раза. Лишнее телодвижение и повторяющийся код в разных методах.

Повторяющийся код в if-ах нужно вынести в отдельный метод.

mishanya3624кроме datetime, что не так(уже и по разному парсить пробовал, никак не хочет)документацию по Datetime.Parse в зубы и вперед

если я не буду парсить 1 раз , то не смогу делать условия по типам(конечно же я думаю, что щас ахинею сказал), поэтому можно чуть развернутей, как убрать 1 парсинг, чтобы оставить, только в параметрах sql
...
Рейтинг: 0 / 0
Поиск в базе по Guid
    #39152681
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mishanya3624конечно же я думаю, что щас ахинею сказалконечно, ведь есть такая штука как GetType(). Поэтому, пусть parseinput возвращает object, в котором будет уже распарсенное значение. Я это говорил еще на первой странице топика.
...
Рейтинг: 0 / 0
Поиск в базе по Guid
    #39153273
mishanya3624
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Promishanya3624конечно же я думаю, что щас ахинею сказалконечно, ведь есть такая штука как GetType(). Поэтому, пусть parseinput возвращает object, в котором будет уже распарсенное значение. Я это говорил еще на первой странице топика.
и это готовое значение, я просто подставляю в sqlparameters вместо парсинга Value=Guid.Parse(....) на Value = это значение?
...
Рейтинг: 0 / 0
Поиск в базе по Guid
    #39153284
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну да
...
Рейтинг: 0 / 0
Поиск в базе по Guid
    #39153498
mishanya3624
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
блин, что-то не получается через объект распарсенные значения передать.... надо на свежую голову...
...
Рейтинг: 0 / 0
Поиск в базе по Guid
    #39155848
mishanya3624
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А как при запуске приложения сделать, чтобы открывалась другая Windows Form, а не та, которая при создании проекта создается?
...
Рейтинг: 0 / 0
Поиск в базе по Guid
    #39155852
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Project => Properties
...
Рейтинг: 0 / 0
Поиск в базе по Guid
    #39155874
mishanya3624
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,
Спасибо, что-то там не нашел, поменял в Program.cs, до этого мимо глаз все проскальзевала строка.
...
Рейтинг: 0 / 0
21 сообщений из 71, страница 3 из 3
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Поиск в базе по Guid
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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