【发布时间】:2010-12-25 08:01:12
【问题描述】:
我正在使用 OleDbCommand.ExecuteNonQuery() 将数据插入数据库:
ObjCommand = New OleDbCommand
ObjCommand.CommandType = CommandType.StoredProcedure
ObjCommand.CommandText = StrSQL
ObjCommand.Parameters.Add("field1", OleDbType.VarChar).Value = <something1>
ObjCommand.Parameters.Add("field", OleDbType.VarChar).Value = <something2>
(...)
(...)
ObjCommand.Parameters.Add("field50", OleDbType.VarChar).Value = <something50>
ObjCommand.Connection = GetDBConnection(StrConnectionString)
ObjCommand.Connection.Open()
<some integer> = ObjCommand.ExecuteNonQuery()
还有一个转换异常只显示在最后一行:
将数据类型 varchar 转换为 smallint 时出错
我想知道这是否是正常行为,以及我如何知道发生转换问题的位置。
更新:
ObjCommand.Parameters.Add("@IdMunFatoGerador", OleDbType.VarChar).Value
= ObjNFe.idMunFatoGerador
我通过注释每一行并取消注释某些行找到了这一行,这一行给了我上述异常。
ObjNFe.idMunFatoGerador 是一个字符串,并且给了我“将数据类型 varchar 转换为 smallint 的错误”
【问题讨论】:
-
Obs:不止两个参数,也有50多个。这是对我的代码的总结。
-
50 个参数对于存储过程来说似乎是一个非常多的参数。这与答案无关,只是另一个问题。
-
为什么我被否决了?这个问题已经解决了!
-
我没有给你投反对票(虽然我觉得有必要),但我猜你投反对票的原因是因为这个问题没有明确表述,并且误导了那些花时间试图帮助你的人
-
@Marcelo,不要把它当成个人。没有人反对你,或者你是 SO 或编程的新手。只是问题通常会根据它们对其他人的帮助程度而被投票赞成/反对——仅此而已。当然,这里的一些人比其他人更快地使用反对票来表达他们的意见,但最终正面投票比负面投票更重要,即使是排名最高的成员也有他们的反对票。
标签: c# sql vb.net exception executequery