Size: a a a

2021 November 09

YK

Yevhenii Kriachko in С#
Господа матерые прогеры! Подскажите где я налажал? Использую MySQL, добавляю в таблицу строку. Хочу сделать параметрический запрос. Запрос с параметрами. Против SQL инъекций. По факту методом записывается имя параметра "@param" вместо его значения "test"

string connStr = "server=" + server + ";user=" + databaseUserId + ";database=" + databaseName + ";port=" + port + ";password=" + databasePassword;
     
     MySql.Data.MySqlClient.MySqlConnection conn = new MySql.Data.MySqlClient.MySqlConnection(connStr);
     conn.Open();
     string query = "insert into test (testParam) values('@param');";
     
     MySql.Data.MySqlClient.MySqlCommand cmd = new MySql.Data.MySqlClient.MySqlCommand(query, conn);
     
     var p = new MySql.Data.MySqlClient.MySqlParameter();
           p.ParameterName = "@param";
           p.Value = "test";
     
     cmd.Parameters.Add(p);
     
     cmd.ExecuteNonQuery();
     conn.Close();
источник

YK

Yevhenii Kriachko in С#
ага! все понял! Дело в кавычках!
string query = "insert into test (testParam) values(@param);";
источник

Д

Денис in С#
('@param') значения не нужно в кавычки ординарные
источник

Д

Денис in С#
автоматом все подставляется
источник

YK

Yevhenii Kriachko in С#
да, я уже разобрался. Спасибо.
источник

ГГ

Гыкер Гыкерович... in С#
Ну да ты вставля строку 'ильяпарам' вместо значения
источник

YK

Yevhenii Kriachko in С#
да-да-да, уже понял.
источник

YK

Yevhenii Kriachko in С#
подскажи еще пожалуйста, как вставить массив параметров? Не получается (

string connStr = "server=" + server + ";user=" + databaseUserId + ";database=" + databaseName + ";port=" + port + ";password=" + databasePassword;
     MySql.Data.MySqlClient.MySqlConnection conn = new MySql.Data.MySqlClient.MySqlConnection(connStr);
     conn.Open();
     MySql.Data.MySqlClient.MySqlCommand cmd = new MySql.Data.MySqlClient.MySqlCommand(query, conn);      
     MySql.Data.MySqlClient.MySqlParameter[] parameters = new MySql.Data.MySqlClient.MySqlParameter []
     {
       new MySql.Data.MySqlClient.MySqlParameter() {"@param", "paramValue1"}
     };
     
     cmd.Parameters.AddRange(parameters);
     
     cmd.ExecuteNonQuery();
     conn.Close();
источник

ГГ

Гыкер Гыкерович... in С#
а что не поулчается что пишет
источник

YK

Yevhenii Kriachko in С#
такую хрень пишет
источник

YK

Yevhenii Kriachko in С#
и список пробовал создавать. Тоже не вышло.
источник

ГГ

Гыкер Гыкерович... in С#
та а зачем?
источник

YK

Yevhenii Kriachko in С#
ну надо же что-то делать? )))))
источник

ГГ

Гыкер Гыкерович... in С#
ну можно
var list = new List<(string,string)>();

foreach(var par in list) cmd.Parameters.Add(par.Item1, par.Item2);
источник

YK

Yevhenii Kriachko in С#
не понял. Зачем перебирать значения в list если он только что создан...  Не будет там никакого цикла мне кажется.
источник

ГГ

Гыкер Гыкерович... in С#
ну так что я их еще и добавлять в лист должен? сам добавь
источник

ГГ

Гыкер Гыкерович... in С#
MySql.Data.MySqlClient.MySqlParameter[] parameters = new MySql.Data.MySqlClient.MySqlParameter []()
     {
       new MySql.Data.MySqlClient.MySqlParameter() {"@param", "paramValue1"}
     };
А так попробуй
источник

ГГ

Гыкер Гыкерович... in С#
тлт как там синтаксис
источник
2021 November 10

YK

Yevhenii Kriachko in С#
та нет, так точно не получится
источник

ГГ

Гыкер Гыкерович... in С#
вобще странная ошибка, должно получится
источник