c# - 如何通过textbox和datagridview更新主键

标签 c# winforms datagridview

我在 C# 中使用 Windows 窗体,我有一个 gridview 和 4 个文本框和更新按钮,我想通过文本框更新选定的行,我可以更改名称、大小、日期,但我不能更改 ID,我希望能够更改所有列。我该怎么做!!

 private void Updatebtn_Click_1(object sender, EventArgs e)
       {

               SqlConnection conn = new SqlConnection(@"Data Source=Ali-pc\sqlexpress;Initial Catalog=DB;Integrated Security=True");
               SqlCommand cmd = new SqlCommand("update stock set Id=@Id, Name= @Name,  Size= @Size, Date=@Date where Id=@Id ", conn);
               conn.Open();
               cmd.Parameters.AddWithValue("@Id", textBox1.Text);
               cmd.Parameters.AddWithValue("@Name", textBox2.Text);
               cmd.Parameters.AddWithValue("@Size", textBox3.Text);
               cmd.Parameters.AddWithValue("@Date", dateTimePicker1.Value);
               cmd.ExecuteNonQuery();
               MessageBox.Show("Successfully Changed ", "message", MessageBoxButtons.OK, MessageBoxIcon.Information);
               DataTable ds = new DataTable();
               SqlDataAdapter sda = new SqlDataAdapter("Select * from stock", conn);
               sda.Fill(ds);
               BindingSource bs = new BindingSource();
               bs.DataSource = ds;
               dataGridView1.DataSource = bs;

           }

最佳答案

仔细看你的命令。

update ... set Id=@Id ... where Id=@Id

您尝试将您的 Id 列设置为已经的值。喜欢;

update ... set Id=5 ... where Id=5

这就是您的列值不会更改的原因。考虑更改您的 WHERE 部分,您想要准确更改其值。

还有一些事情;

关于c# - 如何通过textbox和datagridview更新主键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33847854/

相关文章:

c# - 在 .NET 多语言 Web 应用程序中验证名称的正则表达式

c# - 如何在 List<object> 中使用 Linq 过滤数据

c# - 适用于 Windows 7 64 位的 SQLite3.dll

C# 在开始时隐藏新窗体

c# - 单击按钮时引发事件并将其订阅到另一个类中的事件处理程序?

c# - DataGridView 不显示最近插入的行

c# - 如何删除DataGridView中特定链接单元格的下划线

wpf - 图片异步数据绑定(bind),导致跨线程异常

c# - WP8后台代理网络请求

c# - 类似于 gmail 的 "Report a bug"功能的库