文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>可恶的Access,Update失败

可恶的Access,Update失败

时间:2011-01-20  来源:基础软件

这两天做一小网站,服务器上面没有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语句中出现的顺序一致,程序就能正常工作了。

 

相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载