2014-08-29 37 views
3

我想將某些文本框的內容插入到SQL Server數據庫中。SQL Server INSERT命令不會插入數據

這是我的代碼使用方法:

SqlConnection myConn = new SqlConnection(myConnection); 
myConn.Open(); 

SqlCommand InsertCommand = new SqlCommand("INSERT INTO invmgmt.Products (product_id, product_name, product_price, possible_discount, product_in_stock) VALUES ('" + Convert.ToInt32(tbAddProdID.Text) + "','" + tbAddProdName.Text + "','" + Convert.ToDouble(tbAddProdPrice.Text) + "','" + Convert.ToInt32(tbAddPblDiscount.Text) + "','" + Convert.ToInt32(tbAddInStock.Text) + "')"); 

myConn.Close(); 

如果我是執行,沒有任何反應到數據庫中,沒有人知道該怎麼辦?我試過其他一些Insert命令,但沒有想要工作。

回答

8

你必須與你的命令的連接,然後關聯執行查詢:

InsertCommand.Connection = conn; 
InsertCommand.ExecuteNonQuery(); 

一些其他的東西:

  • 不要使用字符串連接來創建SQL查詢。在查詢中使用參數。請參閱:SqlCommand.Parameters否則您很容易SQL Injection
  • using語句中附上您的連接和命令對象。
+1

+1的secound參數。字符串連接已廣泛開放給http://en.wikipedia.org/wiki/SQL_injection。 – Matt 2014-08-29 19:38:14

1

添加到您的命令連接並執行它:

SqlCommand InsertCommand = new SqlCommand("INSERT INTO invmgmt.Products (product_id, product_name, product_price, possible_discount, product_in_stock) VALUES ('" + Convert.ToInt32(tbAddProdID.Text) + "','" + tbAddProdName.Text + "','" + Convert.ToDouble(tbAddProdPrice.Text) + "','" + Convert.ToInt32(tbAddPblDiscount.Text) + "','" + Convert.ToInt32(tbAddInStock.Text) + "')",myConn); 

InsertCommand.ExecuteNonQuery(); 
+0

謝謝,我得到了2個故障。首先是不寫InsertCommand.ExecuteNonQuery(); Secound將使用參數來忘記SQLCommand – IceTrailer 2014-08-29 19:33:19

1

你缺少:

InsertCommand.ExecuteNonQuery(); 
0

打開下面的連接嘗試代碼之後:

string query = ..........; 
SqlCommand myCommand = new SqlCommand(query, myConn); 
myCommand.ExecuteNonQuery(); 
myConn.Close(); 

注:輸入您的查詢,而不是點。

+0

非常感謝,是的,我忘記了SqlCommand的第二個參數。 – IceTrailer 2014-08-29 19:35:50

+0

沒問題,你可以接受答案,以幫助其他有同樣問題的人 – user1722022 2014-08-29 19:38:21

0

的ExecuteNonQuery()返回受影響的行數,所以它能夠更好地檢查返回以處理錯誤情況

的Int32 RET = sqlcommand.ExecuteNonQuery();

如果(RET < = 0) { enter code here }

0

,你必須執行查詢並關閉在此之後您的連接如下圖所示

SqlConnection myConn = new SqlConnection(myConnection); 
myConn.Open(); 

string sql ="YOUR QUERY..."; 
SqlConnection myConn = new SqlConnection(myConnection); 
myConn.Open(); 
SqlCommand InsertCommand = new SqlCommand(sql,myConn); 
InsertCommand.ExecuteNonQuery(); 
myConn.Close(); 

,或者如果你想檢查查詢是執行還是不執行此操作。

if(InsertCommand.ExecuteNonQuery()>0){ //some message or function } 

返回值是受該語句影響的行數。