[ad_1]
在 SQL Server 中,我创建了这个存储过程:
SQL
CREATE PROCEDURE [dbo].[GetOutletInfo] @PermitID int AS SELECT * FROM Outlets WHERE PermitID=@PermitID GO
然后在我的 C# 代码中运行:
C#
var cn = new SqlConnection(connectionString); SqlDataAdapter da; DataSet ds = new DataSet(); da = new SqlDataAdapter("GetOutletInfo", cn); da.SelectCommand.CommandType = CommandType.StoredProcedure; da.SelectCommand.Parameters.Add("@PermitID", SqlDbType.Int).Value = PermitID; da.Fill(ds, "GetOutletInfo");
执行时,da.Fill 抛出此异常:
系统格式异常
H结果=0x80131537
消息=无法将参数值从 String 转换为 Int32。
源=System.Data.SqlClient
我在谷歌上搜索了几个小时,绞尽脑汁尝试不同的事情,但没有成功。 任何指示或见解将不胜感激。 谢谢
我尝试过的:
This query works (since it does not need a parameter) SqlDataAdapter da; DataSet ds = new DataSet(); da = new SqlDataAdapter("GetInspectionLettersQueue", cn); da.SelectCommand.CommandType = CommandType.StoredProcedure; da.Fill(ds, "GetInspectionLettersQueue");
我尝试将参数转换为 int32,然后将其添加到Parameters.Add 命令,但这不起作用。
解决方案1
嗯,我想我需要更多咖啡。 事实证明 PermitID 是一个字符串,但被设置为“foo” – 呃 – 难怪 – 感谢您的查看,一旦我将其设置为“42”,它就起作用了。
我也没有感觉
解决方案2
如果我记得我的 SQL,参数类型必须全部是字符串,而不是整数。 尝试一下。
[ad_2]
コメント