”值不能为空 参数值:DataSet“的错误原因

        // 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);
            }
        }


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值