переменная c # в команду sql - PullRequest
0 голосов
/ 16 августа 2011
string alpha="this is text";
string sql = "INSERT INTO dokimastikospinakas (pliroforia) VALUES ('alpha')";

Какой правильный синтаксис для передачи переменной c # в команду sql?

Ответы [ 7 ]

12 голосов
/ 16 августа 2011

Вот только один очень простой метод:

var yourTextValue = "this is text";
using (var db = new SqlConnection()) {
    db.Open();

    var command =
        new SqlCommand("INSERT INTO dokimastikospinakas (pliroforia) VALUES (@textValue);", db);
    command.Parameters.AddWithValue("@textValue", yourTextValue);

    command.ExecuteNonQuery();
}

РЕДАКТИРОВАТЬ : Вам, разумеется, понадобится некоторая строка подключения для конструктора SqlConnection. И измененные имена переменных по многочисленным просьбам.

3 голосов
/ 16 августа 2011

Чтобы избежать уязвимостей SQL-инъекций, я рекомендую:

string alpha="this is text";
SqlCommand sqlComm = new SqlCommand();
sqlComm.CommandText = "INSERT INTO dokimastikospinakas (pliroforia) VALUES (@var)";
sqlComm.AddWithValue("@var", alpha);

.. и т.п.

2 голосов
/ 16 августа 2011
string insert = "INSERT INTO dokimastikospinakas (pliroforia) VALUES (@alpha)";

using (SqlConnection connection = new SqlConnection(...))
{
    connection.Open();
    using (SqlCommand command = new SqlCommand(insert, connection))
    {
        command.Parameters.Add("@alpha", alpha);
        command.ExecuteNonQuery();
    }
}
2 голосов
/ 16 августа 2011

Изучите использование параметризованных запросов.

SqlCommand command = new SqlCommand();
command.Parameters.Add("@alpha").Value = alpha;
command.CommandText = sql;

И ваш запрос будет выглядеть так:

string sql = "INSERT INTO dokimastikospinakas (pliroforia) VALUES (@alpha)";
1 голос
/ 16 августа 2011

Вы используете ADO.NET?Тогда вам нужны параметризованные запросы:

IDbCommand command = new IDbCommand();
// Set up command connection
command.Text = "INSERT INTO dokimastikospinakas (pliroforia) VALUES (@alpha)";
command.Parameters.Add(new SqlParameter("@alpha", alpha));

Приведенный выше фрагмент кода, конечно, зависит от типа базы данных, которую вы используете (особенно от того, какой тип SqlParameter вы добавляете.

0 голосов
/ 16 августа 2011
string alpha;
string sql = "INSERT INTO dokimastikospinakas (pliroforia) VALUES ('" + alpha + "')";

это самый простой способ сделать это, но он не защищен от атак SQL-инъекций. Вместо этого вы должны сначала проверить значение alpha, чтобы убедиться, что его можно безопасно использовать в запросе.

0 голосов
/ 16 августа 2011

Пример использования объекта OracleCommand: OraCon - это OracleConnection.

string sql = "INSERT INTO dokimastikospinakas (pliroforia) VALUES ( :Alpha )";
OracleCommand cmd = new OracleCommand(sql, OraCon);
cmd.CommandType = CommandType.Text;
cmd.Parameters.Add(":Alpha", alpha);
cmd.ExecuteNonQuery();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...