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();
        }
    }
}

私のSQLServerテーブルには、次のテーブルとタイプが含まれています

storeCode INT
employee INT
Date DATETIME
itemListNoId INT

どんな助けでもいただければ幸いです。

4

3 に答える 3

3

問題は最初のパラメーター(storeCode)にあると思います。文字列をintパラメータとして送信しようとしています。

その行は次のようになります。

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

もう1つ疑わしいことがあります。パラメーターの名前はstoreCodeです。これは、varchar列を意味します。storeCodeとして渡そうとしている値は何ですか?本当にintですか?

于 2012-05-20T18:13:20.360 に答える
1

入力の1つは文字列です。宣言を確認して、次のことを確認してください。

storeCode
employeeId
itemListNoId

ひもだstoreCodeと思います。あなたはそれを:として解析することによってこれを修正することができますInt

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

ただし、これがstoreCode寄生可能でない場合、これは問題を引き起こしますInt

于 2012-05-20T18:09:53.520 に答える
1

メソッドのパラメーターのタイプを変更することをお勧めします。

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

値をメソッドに渡す前に文字列を変換します。

于 2012-05-20T18:56:39.060 に答える