-1

C# winforms アプリケーションから SQL Server のテーブルにデータを挿入しようとしています。

現在、クエリを実行すると、次のエラーが表示されます。

「soAddItems」付近の構文が正しくありません

insertデータベースの CRUD 操作を処理するクラスのコードを次に示します。

注: テスト データとして:

  • itemName = "テスト"
  • skuNo = "a123"
  • 商品価格 = 2.99
  • stockItemToAdd = 3
  • itemPic = "C:\Users\Name\Pictures\pic.png"**

コード:

public virtual void AddItem(string itemName, string skuNo, double itemPrice, int stockAmountToAdd, string itemPic)
{
        using (SqlConnection open = new SqlConnection(connectionString))
        {
            SqlCommand insertCommand = new SqlCommand("soAddItems", open);

            open.Open();

            insertCommand.Parameters.Add("@itemName", SqlDbType.NChar).Value = itemName;
            insertCommand.Parameters.Add("@skuNo", SqlDbType.VarChar).Value = skuNo;
            insertCommand.Parameters.Add("@itemPrice", SqlDbType.Decimal).Value = itemPrice;
            insertCommand.Parameters.Add("@instockAmount", SqlDbType.BigInt).Value = stockAmountToAdd;
            insertCommand.Parameters.Add("@lastSold", SqlDbType.DateTime).Value = DateTime.Today;
            insertCommand.Parameters.Add("@itemPic", SqlDbType.NChar).Value = itemPic;

            //***** Error on the execute*****
            insertCommand.ExecuteNonQuery();
        };
    }

SQL Server ストアド プロシージャ:

ALTER PROC [dbo].[soAddItems]
   @itemName nchar,
   @skuNo varchar,
   @itemPrice float,
   @instockAmount bigint,
   @lastSold dateTime, 
   @itemPic varchar
AS
BEGIN
    INSERT INTO items (itemName, skuNo, itemPrice, instockAmount, lastSold, itemPic) 
    VALUES (@itemName, @skuNo, @itemPrice, @instockAmount, @itemPic)
END

誰が私が間違っているのか教えてもらえますか?

4

3 に答える 3

2

SqlCommandコマンド タイプをストアド プロシージャとして指定する必要があります。

これを試して:

insertCommand.CommandType = CommandType.StoredProcedure;
于 2013-11-02T19:32:09.617 に答える
1

SqlCommand.CommandTypeプロパティの割り当てを忘れているようです。

デフォルトのままTextだからです。

insertCommand.CommandType = CommandType.StoredProcedure;
于 2013-11-02T19:31:50.040 に答える
0

の欠落CommandType.StoredProcedureに加えて、2 つ目の大きな欠陥があります。次のようにパラメーターを定義すると、 - 1 文字の長さ@skuNo varcharの文字列が得られます。

通常、これは望ましくありません。T -SQL でパラメーターと変数を定義するときは、常に長さを指定する必要があります。

用途:@skuNo varchar(50)または必要な長さ

于 2013-11-02T20:17:48.990 に答える