1 Востаннє редагувалося yurikizio (26.09.2015 15:42:58)

Тема: MySql не знає назву стовпця яка складається з двох слів

Пишу програму на шарпі, яка працює з бд mysql, виникла така проблема, стовпець названо укр мовою, та ще й з апострофом, або тире або взагалі з двох слів(мені дали вже існуючу бд до якої треба написати систему кервування нею), от і коли я в запиті на вибірку вказую імя стовпця то mysql зчитує лише перше слово, або літери до ',- тощо, пробував користуватися функціями які оєднюють стрічки, помогло частково, воно створює обєднану стрічку в одинарних лапках, а в такому вигляді видається чогось пустий результат(не помилка, пробував назву стовпця напр Прізвище брати в одинарні лапки - таке саме), тому допоможіть будь ласка, або порадьте як вийти з сутації, перейменовувати назву стовпця  - це вже якшо нічо не вийде зробити, а так хотілося б якось вийти з ситуації
метод який ств запит

  private string GetSqlString()
        {
            string sSql = "SELECT * FROM graduates  ";
            if (textBox1.Text != "") sSql += "WHERE Прізвище LIKE '%" + textBox1.Text + "%' ";// все працює
            if (textBox2.Text != "") sSql += "WHERE Ім'я LIKE '%" + textBox2.Text + "%' ";// каже о стовпець назив Ім а решту літер опускає і видає помилку
            if (textBox3.Text != "") sSql += "WHERE CONCAT_WS('-','По','батькові') LIKE '%" + textBox3.Text + "%' ";// повертає значення стопця в лапках
            if (textBox4.Text != "") sSql += "WHERE Спеціальність LIKE '%" + textBox4.Text + "%' ";
            if (textBox5.Text != "") sSql += "WHERE CONCAT_WS(' ','Рік','закінення','навчання')=" + textBox5.Text;
            if (textBox6.Text != "") sSql += "WHERE Місце роботи LIKE '%" + textBox6.Text + "%' ";
            return sSql;
        }

2

Re: MySql не знає назву стовпця яка складається з двох слів

Складати руками рядок запиту - це дуже поганий стиль.
А вам треба отакі лапки:

WHERE `Місце роботи` LIKE

3

Re: MySql не знає назву стовпця яка складається з двох слів

koala написав:

Складати руками рядок запиту - це дуже поганий стиль.
А вам треба отакі лапки:

WHERE `Місце роботи` LIKE

Оскільки поле стовпець Місце роботи поки що пустий, зробив ідентично для Рік закінчення навчання, виводить пусту таблицю!
WHERE 'Рік закінчення навчання' =1973
див скріншот

4 Востаннє редагувалося koala (26.09.2015 16:33:34)

Re: MySql не знає назву стовпця яка складається з двох слів

Уважно роздивіться лапки. У вас вони не в той бік :) Імена полів мають бути у зворотніх лапках (backquotes) - `, кнопка ліворуч від 1.
Скріншот не бачу.

5 Востаннє редагувалося yurikizio (26.09.2015 16:40:25)

Re: MySql не знає назву стовпця яка складається з двох слів

koala написав:

Уважно роздивіться лапки. У вас вони не в той бік :) Імена полів мають бути у зворотніх лапках (backquotes) - `, кнопка ліворуч від 1.
Скріншот не бачу.

Дуже Вам вдячний, встидно аж, я не знав що існують такі лапки, тепер все працює. Скріншоти не знаю чому не прикріпляє, я тут новенький :)
ще раз дуже вдячний :)
ой, Вам, а не Вас))

6

Re: MySql не знає назву стовпця яка складається з двох слів

поля  БД  мають  бути  латиницею  i одним  словом.   Iнакше - лайнокод.

7

Re: MySql не знає назву стовпця яка складається з двох слів

caballero написав:

поля  БД  мають  бути  латиницею  i одним  словом.   Iнакше - лайнокод.

Але безпечний. На відміну від прописування рядків в запиті. Для цього існують параметри.

8

Re: MySql не знає назву стовпця яка складається з двох слів

caballero написав:

поля  БД  мають  бути  латиницею  i одним  словом.   Iнакше - лайнокод.

згідний, якшо б я сам створював цю БД, мені дали вже готову, до якої створити треба тільки систему керування, хто її створював я без поняття! але видно шо скоріше вона використовувалась як база даних до якогось веб ресурсу на PHP

9

Re: MySql не знає назву стовпця яка складається з двох слів

Почитайте про SQL-injection