c#使用sqlcommand更新datagridview

时间:2012-08-03 02:20:46

标签: c# datagridview

我试图更新我的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,有什么区别?提前谢谢。

如果您有更好的代码,我想从中学习。谢谢!

3 个答案:

答案 0 :(得分:1)

您可以阅读Data Adapter Vs Sql Command

为了克服这个错误,我相信你需要分配命令的Connection = con

update.Connection = con;

以下是参考:SqlCommand.Connection Property

或者在这一行:

SqlCommand update = new SqlCommand(updateData, con);

ps完成后,不要忘记处理SqlCommand对象:

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

答案 1 :(得分:1)

1st:确保您的更新查询正确

更新语法:

   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-station上查看此示例:ado.net lesson 6

这个代码看起来像是:

string updateData = "UPDATE CostPrice SET SupplierName = @SupplierName, CostPrice = @CostPrice WHERE PartsID =@PartsID";
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();

此致

答案 2 :(得分:0)

正如杰里米·汤普森所说,你错过了一行代码。

update.Connection = con; 

在致电update.ExecuteNonQuery();

之前添加此代码