2010-10-28 4 views
1

У меня есть запрос SQL следующим образомвставки синтаксиса запроса проблема

String S = Editor1.Content.ToString(); 
    Response.Write(S); 
    string sql = "insert into testcase.ishan(nmae,orders) VALUES ('9',@S)"; 
    OdbcCommand cmd = new OdbcCommand(sql, myConn); 
      cmd.Parameters.AddWithValue("@S", S); 
      cmd.ExecuteNonQuery(); 

Ошибка: Column 'orders' cannot be null at System.Data.Odbc.OdbcConnection.HandleError

ответ

3

Лучше использовать что-то вроде:

var sqlCommandText = "insert into testcase.ishan(nmae,orders) VALUES ('9', @S)"; 
using (var connection = new SqlConnection()) 
{ 
    using (var command = new SqlCommand(sqlCommandText , connection)) 
    { 
     command.Parameters.AddWithValue("@S", S); 
     command.ExecuteNonQuery(); 
    } 
} 

Использование параметров предотвращает SQL injection. По-моему, решение Эндрюса.

ExecuteNonQuery() будет возвращать количество затронутых строк, если вам это нужно.

Использование заявлений будет заботиться о правильном использовании соединения, поэтому впоследствии у вас нет открытых подключений. Это связано с тем, что SqlConnection реализует IDisposable.

+0

Неверное имя типа или пространства имен 'SqlConnection' – Ninad

+0

добавьте это с помощью System.Data.SqlClient; –

+0

Вы должны ссылаться/импортировать/использовать System.Data.SqlClient. См.: Http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlconnection.aspx – Peter

Смежные вопросы