Помогите правильно составить INSERT запрос в SQL на C#

MaksimHelp

Client
Регистрация
23.09.2016
Сообщения
204
Благодарностей
7
Баллы
18
Прошу подсказать как правильно нужно составить запрос INSERT с переменными. Запрос в строке 24
Вот как пытаюсь я:
C#:
string db_host = "";     // хост
string db_user = "";          // username для подключения к MySQL
string db_pswd = "";              // пароль для подключения к MySQL
string db_database = "vh345077_bd";      // название БД с которой будет работа
string db_charset = "utf8";       // кодировка данных в таблицах

// коннект к MySQL и открытие сессии
/*
if ( conn.State != ConnectionState.Open ){
    open();  
}*/
DB db = new DB(db_host, db_user, db_pswd, db_database, db_charset);

project.Variables["akk"].Value = db.getOne("SELECT sent FROM exchange WHERE id_vk="+project.Variables["id_vk"].Value); // Берем sent

project.Variables["price_akk"].Value = db.getOne("SELECT sent_price FROM exchange WHERE id_vk="+project.Variables["id_vk"].Value); // Берем sent_price

var id_vk = project.Variables["id_vk"].Value;
var akk = project.Variables["akk"].Value;
var id_message = project.Variables["id_message"].Value;
var price = project.Variables["price_akk"].Value;
var split_id = project.Variables["akk"].Value+",";

db.query("INSERT INTO report (id_vk, akk, id_message, price, split_id) VALUES ("+id_vk+", "+akk+", "+id_message+", "+price+", "+split_id+")");

db.query("UPDATE exchange SET sent=0, sent_price=0 WHERE id_vk="+project.Variables["id_vk"].Value); //Меняем sent и sent_price на 0

    db.close();
Строка 24, но так происходит ошибка :
Выполнение действия CSharp OwnCode: Вставляем отчет. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ')' at line 1

Если убираю эту скобку с кавычками и оставляю одну скобку то выдает другую ошибку:
Выполнение действия CSharp OwnCode: Вставляем отчет. Fatal error encountered during command execution.
 
  • Спасибо
Реакции: Rimen

porileenvej

Client
Регистрация
09.05.2020
Сообщения
99
Благодарностей
131
Баллы
33
Все строковые переменные в запросе, нужно отправлять а кавычках.
C#:
db.query("INSERT INTO report (id_vk, akk, id_message, price, split_id) VALUES ('"+id_vk+"', '"+akk+"', '"+id_message+"', '"+price+"', '"+split_id+"')");
Лучше делать так, не ошибешься в кавычках
C#:
string query = "INSERT INTO report (id_vk, akk, id_message, price, split_id) VALUES ('{0}', '{1}', '{2}', '{3}', '{4}')";
db.query(String.Format(query, id_vk, akk, id_message, price, split_id));
Если у тебя последние версии зенки, тогда еще проще
C#:
db.query($"INSERT INTO report (id_vk, akk, id_message, price, split_id) VALUES ('{id_vk}', '{akk}', '{id_message}', '{price}', '{split_id}')");
 
  • Спасибо
Реакции: Rimen и MaksimHelp

MaksimHelp

Client
Регистрация
23.09.2016
Сообщения
204
Благодарностей
7
Баллы
18
Все строковые переменные в запросе, нужно отправлять а кавычках.
C#:
db.query("INSERT INTO report (id_vk, akk, id_message, price, split_id) VALUES ('"+id_vk+"', '"+akk+"', '"+id_message+"', '"+price+"', '"+split_id+"')");
Лучше делать так, не ошибешься в кавычках
C#:
string query = "INSERT INTO report (id_vk, akk, id_message, price, split_id) VALUES ('{0}', '{1}', '{2}', '{3}', '{4}')";
db.query(String.Format(query, id_vk, akk, id_message, price, split_id));
Если у тебя последние версии зенки, тогда еще проще
C#:
db.query($"INSERT INTO report (id_vk, akk, id_message, price, split_id) VALUES ('{id_vk}', '{akk}', '{id_message}', '{price}', '{split_id}')");
Спасибо!
 

dizney

Client
Регистрация
25.01.2014
Сообщения
51
Благодарностей
52
Баллы
18
C#:
db.query("INSERT INTO report SET id_vk='"+id_vk+"', akk='"+akk+"', id_message='"+id_message+"', price='"+price+"', split_id='"+cena_verh+"'");
Вот так без ошибок работает.
 
  • Спасибо
Реакции: MaksimHelp

prostors

Client
Регистрация
16.12.2020
Сообщения
1 016
Благодарностей
33
Баллы
48
у меня ошибка
Выполнение действия Db Fatal error encountered during command execution.
с действиями бд происходит, пример запроса:

SELECT U...
FROM a.. WHERE P... IS NOT NULL AND P... = @S... AND id ... ORDER BY id DESC LIMIT 1;
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)