您的位置:首页 > 其它

”值不能为空 参数值: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);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: