我目前正在尝试为基于网络的应用完成交易;
无法将参数值从字符串转换为Int32
这是该功能的副本。
public static void completeTransaction(string storeCode, string employeeId, DateTime Date, string itemListNoId)
{
using (SqlConnection conn = new SqlConnection("Data Source = ; Initial Catalog =Business ; Integrated Security = true;"))
{
using (SqlCommand command = new SqlCommand("dbo.completeTransaction", conn))
{
command.CommandType = CommandType.StoredProcedure;
command.Parameters.Add("@storeCode", SqlDbType.Int).Value = storeCode;
command.Parameters.Add("@employeeId", SqlDbType.Int).Value = employeeId;
command.Parameters.Add("@Date", SqlDbType.DateTime).Value = Date;
command.Parameters.Add("@itemListNoId", SqlDbType.Int).Value = itemListNoId;
conn.Open();
command.ExecuteNonQuery();
conn.Close();
}
}
}
我的SQL Server表包含以下表和类型
storeCode INT
employee INT
Date DATETIME
itemListNoId INT
任何帮助都将不胜感激。
答案 0 :(得分:2)
我相信问题出在你的第一个参数(storeCode)中。您正在尝试将字符串作为int参数发送。
该行应如下所示:
command.Parameters.Add("@storeCode", SqlDbType.Int).Value = Convert.ToInt32(storeCode);
还有一个可疑的事情:参数的名称是storeCode,它暗示了一个varchar列。你试图作为storeCode传递的价值是多少?你确定它是一个int?
答案 1 :(得分:1)
我建议你改变方法中参数的类型。
到
public static void completeTransaction(int storeCode, int employeeId, DateTime Date, string itemListNoId)
并在将值传递给方法之前转换字符串。
答案 2 :(得分:0)
其中一个输入是一个字符串,检查声明:
storeCode
employeeId
itemListNoId
我想storeCode
是一个字符串。您可以通过将其解析为Int
:
command.Parameters.Add("@storeCode", SqlDbType.Int).Value = int.Parse(storeCode);
但是,如果storeCode
不是可寄生的Int
,则会导致问题。