vs2010+access 数据类型不匹配

yw1688 2011-05-19 12:17:38
最近装了vs2010,在把它和access一起使用时,发现了一个很郁闷的问题。就是以前在vs2005和vs2008里面用同样的代码不会报错,但是vs2010中就报错了。代码如下:

public void addOneLanmu(string lname, string lan, string pid, string ltype)
{
OleDbParameter[] spa ={
new OleDbParameter("@lname",OleDbType.VarChar,20),
new OleDbParameter("@lan",OleDbType.VarChar,5),
new OleDbParameter("@pid",OleDbType.Integer),
new OleDbParameter("@ltype",OleDbType.Integer)
};
spa[0].Value = lname;
spa[1].Value = lan;
spa[2].Value = pid;
spa[3].Value = ltype;
try
{
gl.executeSql("insert into tLanmu(lname,lan,pid,ltype,isedit) values(@lname,@lan,@pid,@ltype,1)", spa);
}
catch (Exception ex)
{
throw ex;
}
}

传值的值如下:addOneLanmu("企业文化","0","0","1")

数据库中lname是文本类型,lan是VarChar类型,长度为5,pid,ltype是整型,isedit是bool类型。

哪位能帮忙解一下惑?
...全文
195 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
threenewbee 2011-05-19
  • 打赏
  • 举报
回复
spa[2].Value = Convert.ToInt32(pid);
spa[3].Value = Convert.ToInt32(ltype);
yw1688 2011-05-19
  • 打赏
  • 举报
回复
转了也不行。虽然我传值过去的时候是字符型的,但是我在参数中是:OledbType.Integer,字符型的数据,如果是数字的话,是会自动隐式的转化为数字型的,还有isedit那个,给它1或者true都是可以的,access是可以识别的
十八道胡同 2011-05-19
  • 打赏
  • 举报
回复
addOneLanmu("企业文化","0","0","1")
你这样传值 ,相当于都是VarChar类型。你的后2个是Integer,需要类型转换
myhope88 2011-05-19
  • 打赏
  • 举报
回复
肯定是类型转换错误吧
winner2050 2011-05-19
  • 打赏
  • 举报
回复
就是数据类型错误。
人家布尔型字段,你给传进去数值型干嘛?
你认为1等同true,数据库不这么认为。

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧