一直使用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语句中的参数的顺序一致,否则更新不成功。