本文共 2588 字,大约阅读时间需要 8 分钟。
// DataGridView数据加载按钮 private void btnLoad_Click(object sender, EventArgs e) { try { string strSql = "select * from studentgrade"; DataSet ds = dbhelper.getDataSet(strSql); dataGridView1.DataSource = ds.Tables[0]; } catch (Exception ex) { MessageBox.Show("数据表格加载失败:" + ex.Message); } } // DataGridView数据修改按钮 private void btnSaveUpdate_Click(object sender, EventArgs e) { try { string dbConnectionString = "Provider=MSDAORA;Data Source=XE;Password=TEST001;User ID=TEST"; using (OleDbConnection connection = new OleDbConnection(dbConnectionString)) { string queryString = "select * from studentgrade"; OleDbDataAdapter adapter = new OleDbDataAdapter(queryString, connection); //adapter.SelectCommand = new OleDbCommand(queryString, connection); OleDbCommandBuilder builder = new OleDbCommandBuilder(adapter); connection.Open(); DataSet ds = dataGridView1.DataSource as DataSet; int i = adapter.Update(ds); connection.Close(); if (i > 0) { MessageBox.Show("数据更新成功!"); } load(); } } catch (Exception ex) { MessageBox.Show("数据更新保存失败:" + ex.Message); } }
当使用类似上述代码编写程序时,就会出现 ”值不能为空 参数值:DataSet“ 这种错误,错误原因如下:
在使用 DataGridView数据加载按钮的单击方法函数btnLoad_Click()中,使用
dataGridView1.DataSource = ds.Tables[0];DataTable的格式来填充DataGridView的数据源。
但是,在后续的 DataGridView数据修改按钮的单击方法函数btnSaveUpdate_Click()中,
DataSet ds = dataGridView1.DataSource as DataSet;使用DataSet 的类型来转换已经被DataTable类型填充的DataGridView数据源,造成将dataGridView1使用as运算符转换为DataSet类型失效,执行过程中ds结果为null值,因而在执行
int i = adapter.Update(ds);后,出现”值不能为空 参数值:DataSet“的错误异常。
应该将上述代码的btnLoad_Click()修改为下面代码:
// DataGridView数据加载按钮 private void btnLoad_Click(object sender, EventArgs e) { try { string strSql = "select * from studentgrade"; DataSet ds = dbhelper.getDataSet(strSql); dataGridView1.DataSource = ds; dataGridView1.DataMember = ds.Tables[0].TableName; } catch (Exception ex) { MessageBox.Show("数据表格加载失败:" + ex.Message); } }
转载地址:http://phsvi.baihongyu.com/