”值不能为空 参数值:DataSet“的错误原因
2013-10-29 15:47
330 查看
// 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); } }
相关文章推荐
- Android关于AndroidManifest.xml详细分析
- Customized version of Stack C++
- [LeetCode]PASCAL Triangle系列
- 汇编常用命令-修改主板生产日期
- EASYUI+MVC4+VS2010通用权限管理系统开发
- 关于防止SQL注入的问题
- win8应用隐私策略书写 方法
- int main(int argc,char* argv[])详解
- 更改iptables规则
- 过滤器与拦截器
- PorterDuff.Mode
- 运维杂记(一):当前时间与网络上的时间不一致
- Java中二维数组的长度
- POJ 3728 The merchant
- cocos2d-x中文文档和例子程序
- c# 连接各种数据库 Access、Server等
- 客户关系管理概述
- Oracle常用SQL(DDL)命令
- 动态代理实现规则的简单降级
- 【LeetCode】 Subsets Subsets II