博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
”值不能为空 参数值:DataSet“的错误原因
阅读量:4134 次
发布时间:2019-05-25

本文共 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/

你可能感兴趣的文章
XHProf-php轻量级的性能分析工具
查看>>
OpenCV gpu模块样例注释:video_reader.cpp
查看>>
就在昨天,全球 42 亿 IPv4 地址宣告耗尽!
查看>>
Mysql复制表以及复制数据库
查看>>
Linux分区方案
查看>>
如何使用 systemd 中的定时器
查看>>
git命令速查表
查看>>
linux进程监控和自动重启的简单实现
查看>>
OpenFeign学习(三):OpenFeign配置生成代理对象
查看>>
OpenFeign学习(四):OpenFeign的方法同步请求执行
查看>>
OpenFeign学习(六):OpenFign进行表单提交参数或传输文件
查看>>
Ribbon 学习(二):Spring Cloud Ribbon 加载配置原理
查看>>
Ribbon 学习(三):RestTemplate 请求负载流程解析
查看>>
深入理解HashMap
查看>>
XML生成(一):DOM生成XML
查看>>
XML生成(三):JDOM生成
查看>>
Ubuntu Could not open lock file /var/lib/dpkg/lock - open (13:Permission denied)
查看>>
collect2: ld returned 1 exit status
查看>>
C#入门
查看>>
C#中ColorDialog需点两次确定才会退出的问题
查看>>