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();

}
}
}
问题已经自己解决。
谢谢各位!
展开
 我来答
wlj1907
2012-05-27 · 超过76用户采纳过TA的回答
知道小有建树答主
回答量:149
采纳率:0%
帮助的人:34.4万
展开全部
如果是在da.Fill(ds); 这一句出错,可能的原因:1、连接问题,2:有没有表user,3如果前两个没有问题,把sql语句改成"select * from [user]"
祝你好运
王姑凉why08
2012-05-27 · TA获得超过195个赞
知道小有建树答主
回答量:283
采纳率:100%
帮助的人:139万
展开全部
一般在填充数据集时,应该加个表名:da.Fill(ds,"tb_name");
数据集填充时,必须有表名,如果没有,那么在绑定数据源的时候,就会报错(找不到表0.......)
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友94f02eb
2012-05-26 · TA获得超过8613个赞
知道大有可为答主
回答量:7955
采纳率:74%
帮助的人:4495万
展开全部
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
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wo211898
2012-05-27 · TA获得超过495个赞
知道小有建树答主
回答量:140
采纳率:0%
帮助的人:144万
展开全部
我一般是在会出错的地方加一个try
返回true;出错时在catch返回false
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wss19890217
2012-05-29
知道答主
回答量:22
采纳率:0%
帮助的人:3.2万
展开全部
你这样麻烦了,C#有个表格控件,直接自动判断行数,不用你每次new row(),很方便的,你找着
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式