-4

重複の可能性:
パラメーターを持つ C# ストアド プロシージャ

複数のパラメーターを渡して C# からストアド プロシージャを呼び出そうとしていますが、動作させることができません。これが私がこれまでに持っているものです。

cmd = new SqlCommand();
cmd = dbConn.CreateCommand();
cmd.CommandText = "inserttoTable @size = " + size + ", @brand = " + brand + ", @manu = " + manu + ", @t= " + id.ToString();
cmd.ExecuteNonQuery();

サイズ、ブランド、マヌーはすべて文字列です。inserttoTable はストアド プロシージャです。

次のエラーが表示されます。System.Data.SqlClient.SqlException: Incorrect syntax near the keyword 'TO'.

4

3 に答える 3

2

これをチェックしてください:

SqlCommand.Parameters プロパティ

于 2012-10-02T14:42:56.657 に答える
2

パラメータを使用し、コマンド タイプをストアド プロシージャに変更すると、問題が少なくなります。

cmd = new SqlCommand();
cmd = dbConn.CreateCommand();
cmd.CommandText = "inserttoTable";
cmd.CommandType = System.Data.CommandType.StoredProcedure;

cmd.Parameters.Add(new SqlParameter("@size", size));
cmd.Parameters.Add(new SqlParameter("@brand", brand));
cmd.Parameters.Add(new SqlParameter("@manu", manu));
cmd.Parameters.Add(new SqlParameter("@t", id.ToString()));

cmd.ExecuteNonQuery();
于 2012-10-02T16:27:30.997 に答える
0

これはストアド プロシージャを呼び出す最適な方法ではありませんが、文字列パラメーターを一重引用符で囲んでおけば問題ありません。

cmd = new SqlCommand(); 
cmd = dbConn.CreateCommand(); 
cmd.CommandText = "inserttoTable @size = '" + size + "', @brand = '" + brand + "', @manu = '" + manu + "', @t= '" + id.ToString() + "'"; 
cmd.ExecuteNonQuery(); 

このコードは非常に古く、10 年前に廃止されました。

于 2012-10-02T15:38:20.887 に答える