Access,Update失败的BUG

我几乎没用过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 Name=@Name,Alias=@Alias where ID=@ID";
            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语句中出现的顺序一致,程序就能正常工作了。

 
 
 
 
 
 
 
 
 
 
 
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值