无法将参数值从字符串转换为Int32

时间:2012-05-20 18:07:20

标签: c# sql sql-server-2008

我目前正在尝试为基于网络的应用完成交易;

  

无法将参数值从字符串转换为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

任何帮助都将不胜感激。

3 个答案:

答案 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,则会导致问题。