您当前位置:设计在线网 >> Acess >> 浏览文章

access 执行update语句失败

分享到:
本文章讲述了access 执行update语句失败.

我几乎

没用过Access,一般都是用Sql Server。

这两天做一小网站,服务器上面没有Sql Server,只好用Access。遇到一个莫名其妙的问题,搞了半天才弄好。这是一个毫无技术含量的问题,纯粹是Access的一种错误规定,甚至是一个Bug。做程序时,要知道这个Bug,否则很难找出错误原因。

以下是我从遇到错误到改正错误的过程。

我在做一个部门数据访问层的类,添加删除查询都没有问题,就是更新不成功。下面贴出insert和update的方法,比较一下,其实代码几乎是一样的。

//插入新数据 public void insert(Department item) { //以下为生成的insert语句 string sql = @"insert into Department ( ID,Name,Alias) values (@ID,@Name,@Alias)"; DbCommand command = db.GetSqlStringCommand(sql); //为数据库命令添加参数 db.AddInParameter(command, "@ID", DbType.String, item.ID); db.AddInParameter(command, "@Name", DbType.String, item.Name); db.AddInParameter(command, "@Alias", DbType.String, item.Alias); db.ExecuteNonQuery(command); command.Dispose(); } //更新数据 public void update(Department item) { //以下为生成的update语句 string sql = @"update Department set [email protected],[email protected] where [email protected]"; DbCommand command = db.GetSqlStringCommand(sql); //为数据库命令添加参数 db.AddInParameter(command, "@ID", DbType.String, item.ID); db.AddInParameter(command, "@Name", DbType.String, item.Name); db.AddInParameter(command, "@Alias", DbType.String, item.Alias); db.ExecuteNonQuery(command); command.Dispose(); }

上面这两段几乎相同的代码,insert能够正常工作,update却不能。update执行时,不出现任何错误提示,也没有异常,所有参数传递也正确,就是更新不到数据库,实在是莫名其妙!

后来从网上查资料,加上试验,才知道:Access参数传递是按照顺序传递的,而不是根据参数名称传递。实际上,在sql语句中,参数的名称是没有作用的,可以叫任意的名字,在定义sql语句时使用的参数名称与添加参数时的名称可以不相同。总之,参数名称在Access中没有任何用。

把上面代码中添加@ID参数的语句调整到第3位,使其与sql语句中出现的顺序一致,程序就能正常工作了。

推荐阅读:
access 执行update语句失败
用代码在SQL和ACCESS和EXECLE之间转换
Access常用内置SQL函数---日期时间函数
推荐文章  
赞助商链接  
热门排行  
主题推广  
中国设计在线网 All Rights Reserved. 互联网违法和不良信息举报
信息产业部备案号:湘ICP备09001063号