2012-08-03 85 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