8

但是,我目前正在尝试为基于 Web 的应用程序完成交易;

将参数值从字符串转换为 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();
        }
    }
}

My SQL Server 表包含以下表和类型

storeCode INT
employee INT
Date DATETIME
itemListNoId INT

任何帮助,将不胜感激。

4

3 回答 3

3

我相信问题出在您的第一个参数(storeCode)中。您正在尝试将字符串作为 int 参数发送。

该行应如下所示:

command.Parameters.Add("@storeCode", SqlDbType.Int).Value = Convert.ToInt32(storeCode);

还有一件更可疑的事情:参数的名称是 storeCode,这意味着一个 varchar 列。您试图作为 storeCode 传递的值是什么?你确定这是一个int?

于 2012-05-20T18:13:20.360 回答
1

我建议您更改方法中参数的类型。

public static void completeTransaction(int storeCode, int employeeId, DateTime Date, string itemListNoId)

并在将值传递给方法之前转换字符串。

于 2012-05-20T18:56:39.060 回答
1

其中一个输入是字符串,请检查以下声明:

storeCode
employeeId
itemListNoId

我想storeCode是一个字符串。您可以通过将其解析为来解决此问题Int

command.Parameters.Add("@storeCode", SqlDbType.Int).Value = int.Parse(storeCode);

storeCode但是,如果永远没有 parasable ,这将导致问题Int

于 2012-05-20T18:09:53.520 回答