您的当前位置:首页正文

C#中access数据库操作问题

2020-11-09 来源:星星旅游

在执行UPDATE和INSERT语句时,需要传入参数,例如这个dal层的 操作 : 1 public static void ModifyUserList(UserList userList) 2 { 3 string OleDb = " UPDATE " + " UserList " + " SET " + 4 " [UserName]=@UserName, " + 5 " [Password]=@Password " +

在执行UPDATE和INSERT语句时,需要传入参数,例如这个dal层的操作:

 1 public static void ModifyUserList(UserList userList)
2 {
3 string OleDb ="UPDATE "+"UserList "+"SET "+
4 "[UserName]=@UserName, "+
5 "[Password]=@Password "+
6 " WHERE [ID]=@ID";
7 try
8 {
9 OleDbParameter[] para = new OleDbParameter[]
10 {
11
12 new OleDbParameter("@UserName",userList.UserName),
13 new OleDbParameter("@Password",userList.Password),
14 new OleDbParameter("@ID",userList.ID)
15
16 };
17 DBHelper.ExecuteCommand(OleDb, para);
18 }
19 catch (Exception e)
20 {
21 Console.WriteLine(e.Message);
22 throw e;
23 }
24 }

起初insert和update的语句都不成功,抛出异常说语法错误,后来在网上看了一些网友的提问和回答,程序中存在这两个错误:

1.字段名与ACCESS关键字冲突,需要在字段名前加方括号“[]”(导致程序抛出异常)

2.参数顺序不对,ACCESS要求参数组中参数的顺序和sql语句中参数出现的顺序一致(程序会正常执行,但是语句执行返回的影响行数却总是0)

我起初按1修改,程序不再抛出异常但是执行后数据库没有变化,然后我又按2调整了参数的顺序,顺利修改了数据库的值。

我的问题是:

1.我的表字段的三个名字是ID,Password,UserName,我查了ACCESS的保留字,这三个名字都不是关键字为什么还会抛出异常?

2.关于ACCESS要求参数组中参数的顺序和sql语句中参数出现的顺序一致这个问题,是ACCESS数据库的特殊限制,还是微软的.NET类库在ACCESS访问这方面没有做好??