c#程序出错:“System.Data.OleDb.OleDbException”类型的未经处理的异常出现在 System.Data.dll 中。 35
本人刚学c#,要做一个对access数据库写入程序,用例程拼凑的代码,运行时出错,在34行da.Fill(ds);不知什么原因。以下是c#源代码:usingSystem;...
本人刚学c#,要做一个对access数据库写入程序,用例程拼凑的代码,运行时出错,在34行da.Fill(ds); 不知什么原因。以下是c#源代码:
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.Data;
using System.Data.OleDb;
using System.Data.SqlClient;
namespace access3
{
//声明DataOper类中的公共变量
class access3
{
//private string DBlocation;
static private OleDbConnection dbconn; //数据库连接
static private OleDbDataAdapter da;
static void Main(string[] args)
{
//建立与数据库的连接,这里采用了OLEDB方法:
dbconn = new OleDbConnection(@"provider=microsoft.jet.oledb.4.0; Data Source=c:\test.mdb");
dbconn.Open();
//创建DataSet对象
da = new OleDbDataAdapter(@"select * from user", dbconn); //引用数据库连接dbconn并依据SQL语句"select * from kaizhi"创建OleDbDataAdapter对象da
DataSet ds = new DataSet(); //创建DataSet对象
da.Fill(ds); //用OleDbDataAdapter对象da填充、更新刚创建的DataSet对象
//添加记录并更新数据库
OleDbCommandBuilder cb = new OleDbCommandBuilder(da); // 创建OleDbCommandBuilder对象cb用于更新OleDbDataAdapter对象da的Insert、Delete、Update指令
da.UpdateCommand = cb.GetUpdateCommand(); //更新OleDbDataAdapter对象da的指令
//设计人员可以编写自己的更新指令,也可以象上面所写的那样用系统默认的指令。但不管怎样,上面的语句不能缺少,否则程序在运行中会抛出异常System.InvalidOperationException,并提示:Update requires a valid InsertCommand when passed DataRow collection with new rows.
DataRow drx = ds.Tables[0].NewRow(); //创建一条新记录行
// drx["kzren"] = "kzren";
// drx["kzname"]="kzname";
// drx["riqi"]=2008-10-11;
// drx["shuoming"]="shuoming";
drx["name"] = 12;
drx["memo"] = 3;
// drx["danjia"] = 4;
ds.Tables[0].Rows.Add(drx); //在表中追加记录
da.Update(ds); //更新数据库
//要查询引用某记录的某字段,直接按如下的方法引用就可以了。
String kx = ds.Tables[0].Rows[0]["name"].ToString();
}
}
}
问题已经自己解决。
谢谢各位! 展开
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.Data;
using System.Data.OleDb;
using System.Data.SqlClient;
namespace access3
{
//声明DataOper类中的公共变量
class access3
{
//private string DBlocation;
static private OleDbConnection dbconn; //数据库连接
static private OleDbDataAdapter da;
static void Main(string[] args)
{
//建立与数据库的连接,这里采用了OLEDB方法:
dbconn = new OleDbConnection(@"provider=microsoft.jet.oledb.4.0; Data Source=c:\test.mdb");
dbconn.Open();
//创建DataSet对象
da = new OleDbDataAdapter(@"select * from user", dbconn); //引用数据库连接dbconn并依据SQL语句"select * from kaizhi"创建OleDbDataAdapter对象da
DataSet ds = new DataSet(); //创建DataSet对象
da.Fill(ds); //用OleDbDataAdapter对象da填充、更新刚创建的DataSet对象
//添加记录并更新数据库
OleDbCommandBuilder cb = new OleDbCommandBuilder(da); // 创建OleDbCommandBuilder对象cb用于更新OleDbDataAdapter对象da的Insert、Delete、Update指令
da.UpdateCommand = cb.GetUpdateCommand(); //更新OleDbDataAdapter对象da的指令
//设计人员可以编写自己的更新指令,也可以象上面所写的那样用系统默认的指令。但不管怎样,上面的语句不能缺少,否则程序在运行中会抛出异常System.InvalidOperationException,并提示:Update requires a valid InsertCommand when passed DataRow collection with new rows.
DataRow drx = ds.Tables[0].NewRow(); //创建一条新记录行
// drx["kzren"] = "kzren";
// drx["kzname"]="kzname";
// drx["riqi"]=2008-10-11;
// drx["shuoming"]="shuoming";
drx["name"] = 12;
drx["memo"] = 3;
// drx["danjia"] = 4;
ds.Tables[0].Rows.Add(drx); //在表中追加记录
da.Update(ds); //更新数据库
//要查询引用某记录的某字段,直接按如下的方法引用就可以了。
String kx = ds.Tables[0].Rows[0]["name"].ToString();
}
}
}
问题已经自己解决。
谢谢各位! 展开
6个回答
展开全部
一般在填充数据集时,应该加个表名:da.Fill(ds,"tb_name");
数据集填充时,必须有表名,如果没有,那么在绑定数据源的时候,就会报错(找不到表0.......)
数据集填充时,必须有表名,如果没有,那么在绑定数据源的时候,就会报错(找不到表0.......)
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
da = new OleDbDataAdapter(@"select * from user", dbconn);
改为
da = new OleDbDataAdapter(@"select * from [user]", dbconn);
user 是ACCESS的保留字,作为表名和字段使用,需要转义。
ACCESS的全部保留字,可以见下面的网址
http://rtmd.net/post/access-reserved-words.aspx
改为
da = new OleDbDataAdapter(@"select * from [user]", dbconn);
user 是ACCESS的保留字,作为表名和字段使用,需要转义。
ACCESS的全部保留字,可以见下面的网址
http://rtmd.net/post/access-reserved-words.aspx
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我一般是在会出错的地方加一个try
返回true;出错时在catch返回false
返回true;出错时在catch返回false
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你这样麻烦了,C#有个表格控件,直接自动判断行数,不用你每次new row(),很方便的,你找着
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询