2012-08-03 56 views
0

我試圖更新我的datagridview。 (編輯)c#使用sqlcommand更新datagridview

我的代碼:

private void button1_Click(object sender, EventArgs e) 
    { 
     con = new System.Data.SqlClient.SqlConnection(); 
     con.ConnectionString = "Data Source=tcp:SHEN-PC,49172\\SQLEXPRESS;Initial Catalog=LSEStock;Integrated Security=True"; 
     con.Open(); 


     if (dataGridView1.Rows.Count > 0) 
     { 
      int nRowIndex = dataGridView1.Rows.Count-2; 

      if (dataGridView1.Rows[nRowIndex].Cells[1].Value != null) 
      { 
       textBox2.Text = Convert.ToString(dataGridView1.Rows[nRowIndex].Cells[1].Value); 
       String updateData = "UPDATE CostPrice SET SupplierName = @SupplierName, CostPrice = @CostPrice WHERE PartsID = '" +textBox1.Text+"'"; 
       SqlCommand update = new SqlCommand(updateData, con); 
       SqlDataAdapter adapter = new SqlDataAdapter(updateData, con); 

       update.Parameters.Add("@SupplierName", SqlDbType.NVarChar, 50, "SupplierName"); 
       update.Parameters.Add("@CostPrice", SqlDbType.NVarChar, 50, "CostPrice"); 
       adapter.UpdateCommand = update; 

       //update.ExecuteNonQuery(); 

       if (update != null) 
       { 
        update.Dispose(); 
        update = null; 
       } 

      } 
      else 
      { 
       MessageBox.Show("NULL"); 
      } 
     } 
     con.Close(); 
    } 

它說的ExecuteNonQuery未初始化。我的代碼有什麼問題?

我正在使用SqlCommand進行更新,但是我從互聯網上看到幾乎每個人都在使用SqlDataAdapter,有什麼區別?提前致謝。

如果你有更好的代碼,我想從中學習。謝謝!

回答

1

您可以閱讀上漲約Data Adapter Vs Sql Command

爲了克服這些錯誤,我相信你需要指定命令的連接= CON

update.Connection = con; 

下面是引用:SqlCommand.Connection Property

或本line:

SqlCommand update = new SqlCommand(updateData, con); 

ps不要忘記處置的SqlCommand對象,一旦你與他們做:

if (sqlCommand != null) 
{ 
    sqlCommand.Dispose(); 
    sqlCommand = null; 
} 
0

傑里米·湯普森建議,你缺少的一行代碼。

update.Connection = con; 

只是打電話update.ExecuteNonQuery();

+0

但後來它爲我「附近有語法錯誤 '' 在。執行查詢行 – 2012-08-03 04:47:59

1

1日之前添加以下代碼:請確保您更新的查詢是否正確

更新語法:

UPDATE [TableName] SET [CoulumnName]='new value' where [ColumnName]='yourFilterValue' 

您更新查詢必須是財產以後這樣的:

String updateData = "UPDATE CostPrice SET CostID = @CostID, SupplerName = @SupplierName, CostPrice = @CostPrice WHERE PartsID = @PartsID"; 

第二:你錯過了在你的sqlcommand上添加sqlconnection。

SqlCommand update = new SqlCommand(updateData,con); 

第3步:您的查詢中有參數,但您甚至沒有設置其值。

檢查該樣本CSHARP站上:ado.net lesson 6

這是你的代碼如下:

string updateData = "UPDATE CostPrice SET SupplierName = @SupplierName, CostPrice = @CostPrice WHERE PartsID [email protected]"; 
SqlCommand update = new SqlCommand(updateData, con); 

update.Parameters.Add("@SupplierName", SqlDbType.NVarChar, 50, "SupplierName"); 
update.Parameters.Add("@CostPrice", SqlDbType.NVarChar, 50, "CostPrice"); 
update.Parameters.Add("@PartsID", SqlDbType.NVarChar, 50,textBox1.Text); 
update.ExecuteNonQuery(); 

問候

+0

,但隨後顯示「附近的語法錯誤」,「。在executenonquery()行 – 2012-08-03 04:52:05

+0

我改變了我的代碼,沒有發生錯誤,但數據庫沒有更新。你能看看嗎? – 2012-08-03 07:06:33

+0

remove SqlDataAdapter adapter = new SqlDataAdapter(updateData,con);和adapter.Update();並使用update.ExecuteNonQuery();這就是它,它會工作。 :D投票並標記爲答案。 – BizApps 2012-08-03 07:10:27