C# Datatable未更新回sql

C# Datatable未更新回sql,c#,sql,sql-server,datatable,C#,Sql,Sql Server,Datatable,我有两个datagridview(viewa、viewb)。我通过在viawb中单击并编辑,将行viewa传递给viewb。我可以从服务器获取要查看的项目,但无法将datatable更新回。目前,我正在尝试与一个dgv这个。如果你至少能告诉我,我将不胜感激 public Form1() { InitializeComponent(); } SqlCommand command = new SqlCommand();

我有两个datagridview(viewa、viewb)。我通过在viawb中单击并编辑,将行viewa传递给viewb。我可以从服务器获取要查看的项目,但无法将datatable更新回。目前,我正在尝试与一个dgv这个。如果你至少能告诉我,我将不胜感激

                public Form1()
    {
        InitializeComponent();
    }
    SqlCommand command = new SqlCommand();
    DataTable data = new DataTable();
    private void Form1_Load(object sender, EventArgs e)
    {
        SqlConnection conn = new SqlConnection();
        conn.ConnectionString = "server=server.server.com;user=testuser;pwd=password;database=test";
        SqlCommand command = new SqlCommand();
        command.Connection = conn;
        command.CommandText = "select * from malzeme";
        DataTable data = new DataTable();
        SqlDataAdapter adapter = new SqlDataAdapter(command);
        adapter.Fill(data);
        dataGridView1.DataSource = data;
    }

    private void save_Click(object sender, EventArgs e)
    {
        try
        {
            string connectionString= "server=server.server.com;user=testuser;pwd=password;database=test";


            using (SqlConnection conn = new SqlConnection(connectionString))
            {
                SqlDataAdapter adapter = new SqlDataAdapter();
                adapter.UpdateCommand = new SqlCommand("UPDATE malzeme SET malzemekodu=@malzemekodu " + "WHERE Id=@Id", conn);

                adapter.Update(data);
            }

           }


        catch
        {
        }
    }
}

这里是dgv的示例,根据您提供的不完整代码,看起来您没有定义SqlDataAdapter的InsertCommand/UpdateCommand/DeleteCommand属性。如果您不告诉它如何更新您的数据库,它将不知道如何。。。以下链接将帮助您更好地了解如何使用SqlDataAdapter更新数据库:。祝你好运

编辑 您需要在命令文本中填充参数:

using (SqlConnection conn = new SqlConnection(connectionString))
{
    SqlDataAdapter adapter = new SqlDataAdapter();
    SqlCommand cmd = new SqlCommand("UPDATE malzeme SET malzemekodu=@malzemekodu WHERE Id=@Id", conn);
    //  Add parameters to the command to replace the parameter tokens in your command text
    cmd.Parameters.Add(new SqlParameter("@malzemekodu", "someValue"));
    cmd.Parameters.Add(new SqlParameter("@Id", "someId"));

    adapter.UpdateCommand = cmd; 

    adapter.Update(data);
}

你输入完代码了吗?是的,我输入了,很遗憾它没有输入work@emmett我希望这有助于澄清。谢谢。但不幸的是,情况并非如此。我们需要为表创建更新触发器吗?不,更新触发器用于不同的对象。在添加了我在代码示例中显示的参数之后,发生了什么?你有例外吗?您为参数输入了哪些值,这些值从何处获得?添加到代码“data=(DataTable)(dataGridView1.DataSource);“and I'm get exception”之前必须声明标量变量“@id”