为什么这会抛出异常


在 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,参数类型必须全部是字符串,而不是整数。 尝试一下。

コメント

タイトルとURLをコピーしました