OleDbParameter与SqlParameter的最大区别

  一直使用微软的sqlhelper,它使用SqlParameter进行查询参数的传递。
例如:
private SqlParameter[] GetParameters(tInfo info)
{
  SqlParameter[]parameters =
  {
    new SqlParameter("@iid",SqlDbType.Int,4),
    new SqlParameter("@name",SqlDbType.VarChar,50)
  };
  parameters[0].Value= info.iid;
  parameters[1].Value= info.name;
  returnparameters;
}


  使用没有问题。不论是insert,update还是delete都可以准确无误。

可是我自己写了一个odbchelper,使用OleDbParameter时,update总是报错。说类型不匹配,搜索了很多资料,才发现,原来OleDbParameter[]的参数使用顺序与sql语句里的参数使用顺序必须是对应的。

  update时,id是的位置是最后的,因为语句形式为:

update 表名 set 列=值 where id=xxxx

所以,需要用下面的方法写

private OleDbParameter[] GetParameters(tInfo info)
{
  OleDbParameter[]parameters =
  {
    new OleDbParameter("@name",OleDbType.VarChar,50),
    newOleDbParameter("@iid",OleDbType.Integer)
  };
  parameters[0].Value= info.name;
  parameters[1].Value= info.iid;


  return parameters;
}

原文地址:http://blog.163.com/goodluck_lq@126/blog/static/632853862010019940479/

 

posted @ 2014-02-14 11:58  杨潇love  阅读(1305)  评论(0编辑  收藏  举报