博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

使用Access数据库总结

Posted on 2011-03-25 23:40  孤独者  阅读(849)  评论(0编辑  收藏  举报

  一直使用Sql Server数据库,最近使用Access数据库做了一个练习,发现Access和Sql Server数据库的使用还是有些不一样的地方,在做练习的过程中,发现了一些问题,记录在下面。

1.Access的数据库连接字符串。在Web.config文件中配置Access文件。

<add key="Conn" value="Provider=Microsoft.Jet.Oledb.4.0;Data Source="/>
<add key="Source" value="\App_Data\BBS.mdb"/>

string conString = ConfigurationManager.AppSettings["Conn"]+HttpContext.Current.Server.MapPath("~")+ConfigurationManager.AppSettings["Source"];

2.Access数据库对关键字敏感,对于Password这样的关键字,需要加括号进行查询,否则会报错。

string queryString="insert into Users([UserName],[Password],[Gendor],[CreateTime]) values(@userName,@password,@gendor,@createTime)";

3.对于日期类型的字段,需要先转换为字符串,再转化为日期。

OleDbParameter par=new OleDbParameter("@createTime",Convert.ToDateTime(userInfo.CreateTime.ToString());

4.Access数据库的参数有严格的顺序,如果参数的顺序不对的话,执行时不会报错,但是不会做插入或更新操作,对数据库不会产生任何影响。

string updateString = "update Users set [UserName]=@userName,[Password]=@password,[Gendor]=@gendor where [ID]=@id";
OleDbParameter[] pars ={
                    new OleDbParameter("@userName",userInfo.UserName),
                    new OleDbParameter("@password",userInfo.Password),
                    new OleDbParameter("@gendor",userInfo.Gendor),
                    new OleDbParameter("@id",userInfo.Id)};//如果将Id参数写在前面,执行不会成功

对于上面定义参数的顺序必须和sql语句中的参数的顺序一致,否则更新不成功。