您好我在这里遇到了问题。代码看起来像这样。
private void Form3_Load(object sender, EventArgs e)
{
string connectionString =
"Server=localhost;" +
"Database=oroderm;" +
"User ID=root;" +
"Password=root;" +
"Pooling=false";
string query = "Select * from client";
MySqlConnection conn = new MySqlConnection(connectionString);
MySqlDataAdapter dAdapter = new MySqlDataAdapter(query, connectionString);
conn.Open();
DataSet ds = new DataSet();
MySqlCommandBuilder cBuilder = new MySqlCommandBuilder(dAdapter);
dAdapter.Fill(ds, "client");
BindingSource bSource = new BindingSource();
bSource.DataSource = ds.Tables["client"];
dataGridView2.DataSource = bSource;
}
private void button1_Click(object sender, EventArgs e)
{
DataTable dt = ds.Tables["client"];
this.dataGridView2.BindingContext[dt].EndCurrentEdit();
this.da.Update(dt);
}
所以我想要的是每当我编辑Datagrid中的值时,单击button1(保存按钮)后它将影响我的数据库。恩。如果我在更改名称后将罗马作为客户端,我单击button1则应该更改。但是我得到一个值不能为null错误。请有人帮忙。 T_T
*编辑:继续更新的代码
private MySqlDataAdapter _da;
private DataTable _dt;
private DataSet _ds;
private void Form3_Load(object sender, EventArgs e)
{
updateClient();
}
public void updateClient()
{
string connectionString =
"Server=localhost;" +
"Database=oroderm;" +
"User ID=root;" +
"Password=root;" +
"Pooling=false";
string query = "select * from client";
MySqlConnection conn = new MySqlConnection(connectionString);
_da = new MySqlDataAdapter(query, connectionString);
conn.Open();
_ds = new DataSet();
MySqlCommandBuilder cBuilder = new MySqlCommandBuilder(_da);
_da.Fill(_ds, "client");
BindingSource bSource = new BindingSource();
bSource.DataSource = _ds.Tables["client"];
dataGridView2.DataSource = bSource;
_da.UpdateCommand = cBuilder.GetUpdateCommand();
}
private void button1_Click(object sender, EventArgs e)
{
_dt = _ds.Tables["client"];
this.dataGridView2.BindingContext[_dt].EndCurrentEdit();
this._da.Update(_dt);
}
答案 0 :(得分:4)
我假设您有一个名为ds
的实例变量,并且您期望Form3_Load
方法填充它?这不会发生 - 因为在Form3_Load
你得到了这个:
DataSet ds = new DataSet();
这是声明一个名为ds
的新本地变量,所以除非您在方法中明确使用this.ds
,否则您不会更改{{{ 1}}变量。
当您点击按钮时,我没有得到instance
,我感到有些惊讶,但是您可能已经有了一些代码来创建空 {{1}并在某处分配对NullReferenceException
实例变量的引用。无论如何,将上面显示的行改为:
DataSet
应该解决这个问题。
(我强烈建议您不要在UI线程中发出数据库请求,请注意,您的连接应该有ds
语句,但这些是不同的事情。)