2014-09-16 3 views
-3

Я пишу простую программу для вставки данных в таблицу. Продолжайте получать эту ошибку:Продолжайте получать ошибки, вставляя данные в SQL Server с C#

An unhandled exception of type 'System.InvalidOperationException' occurred in System.Data.dll
Additional information: ExecuteNonQuery: Connection property has not been initialized.

Код:

SqlConnection con = new SqlConnection("Server=ServerName;Database=byte;User=USR;Pwd=PSW;"); 

con.Open(); 
string INstring = "INSERT INTO BWDrfid(RFID,EmpNum) VALUES ('" + RFID + "', '" + EID + "')"; 

SqlCommand cmd = new SqlCommand(INstring); 
cmd.ExecuteNonQuery(); 

con.Close(); 
+2

Вы никогда не устанавливали свойство 'SqlCommand.Connection' равным вашему соединению. – xDaevax

+0

вы не устанавливаете соединение в любом месте. –

+2

Могу я предложить использовать блок 'using'? –

ответ

3

Ну для начала вы не прикрепленными соединение с вашим SqlCommand, и это то, что ошибка точно вам говорю.

SqlCommand cmd = new SqlCommand(INstring, con); 

Что еще более важно, параметризованном ваш запрос, вы открыты для инъекции SQL. Также рассмотрите возможность включения вашего SqlCommand и SqlConnection объекта в using.

using (SqlConnection con = new SqlConnection("Server=ServerName;Database=byte;User=USR;Pwd=PSW;")) 
{ 
    con.Open(); 
    string INstring; 
    INstring = "INSERT INTO BWDrfid(RFID,EmpNum) VALUES (@RFID, EID)"; 
    using (SqlCommand cmd = new SqlCommand(INstring, con)) 
    { 
     cmd.Parameters.Add(new SqlParameter("@RFID", SqlDbType.VarChar).Value = RFID); 
     cmd.Parameters.Add(new SqlParameter("@EID", SqlDbType.VarChar).Value = EID); 
     //cmd.Parameters.AddWithValue("@EID", EID); //Or AddWithValue 
     cmd.ExecuteNonQuery(); 
    } 
} 
+0

Спасибо, все еще учась –

2

вам не хватает аргумент соединения

вы можете использовать эту перегрузку

SqlCommand command = new SqlCommand(INstring, con); 

или это один

sqlCommand.Connection = con; 

SqlCommand

+0

Спасибо, иногда я смотрю на что-то для так долго я скучаю по мелочам. Я очень ценю ваш быстрый ответ. –

5

Вы не подключить команду и соединение. Используйте эту перегрузку вместо:

SqlCommand cmd = new SqlCommand(INstring, con); 
Смежные вопросы