c# 使用 sqlcommand 更新 datagridview

问题描述 投票:0回答:3

我尝试更新我的数据网格视图。 (已编辑)

我的代码:

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,有什么区别?预先感谢。

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

c# datagridview
3个回答
1
投票

您可以阅读有关数据适配器与 Sql 命令

的内容

要克服该错误,我相信您需要分配命令的 Connection = con

update.Connection = con;

这里是参考:SqlCommand.Connection 属性

或者在这一行中:

SqlCommand update = new SqlCommand(updateData, con);

ps 使用完 SqlCommand 对象后,不要忘记处置它们:

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

1
投票

首先:确保您的

Update
查询正确。

更新语法:

UPDATE [TableName] 
SET [ColumnName] = 'new value' 
WHERE [ColumnName] = 'yourFilterValue'

您的更新查询必须是这样的:

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

第二:您刚刚错过了在

SqlConnection
上添加
SqlCommand

SqlCommand update = new SqlCommand(updateData, con);

第三:您的查询中有参数,但您甚至没有设置它们的值。

在 csharp-station 检查此示例:ado.net 第 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();

问候


0
投票

正如 Jeremy Thompson 所建议的,您缺少一行代码。

update.Connection = con; 

在调用之前添加此代码

update.ExecuteNonQuery();

© www.soinside.com 2019 - 2024. All rights reserved.