Problem MSSQL zaiavka s CYRILLIC


1

Здравейте, написал съм една заявка към ДБ за извеждане на имена, но работи само когато търсенето е на ЛАТИНИЦА сменя ли да търся имена на КИРИЛИЦА нищо не ми изкарва.

Ако някой се е справяал с тоя проблем моля да помогне.

Заявката е писана на C#

 

CODE
public string connect = @"Data Source=(local)\CAKA;Initial Catalog=Library;Integrated Security=True"; //TOVA E CONN STRINGA

//AKO textBoxa e na Latinica RABOTI
//Ako e na CYRILLIC NE raboti - izkarva prazna tablica vse edno niama imena na kirilica
con = new SqlConnection(connect);
               SqlCommand cmd = new SqlCommand("SELECT * FROM Books WHERE BookName LIKE '" + textBoxTarsiBook7.Text + "%'", con);
               con.Open();
               cmd.ExecuteNonQuery();
               ds.Clear();
               da.SelectCommand = cmd;
               da.Fill(ds);
               ds.AcceptChanges();
               con.Close();
               dataGridView1.DataSource = ds.Tables[0];




Отговори



4

Оправи си sql injection vulnerability-то първо. (Hint: валидация, параметризирани заявки, EF, character escaping) 

Второ сложи N, за да кажеш на sql server-а да ползва unicode (за кирилица трябват повече от 1 байт :) )

"SELECT * FROM Books WHERE BookName LIKE N'" + textBoxTarsiBook7.Text + "%'"


от westi3m (5621 точки)


0
Златни сте! Поздрави!

от CAKA86 (26 точки)


0

Like депендва на collation.Смени го на Cyrillic_General_CI_AS