2

ストアド プロシージャを呼び出さなければなりませんが、パラメーターの数が増えています。これを行う簡単な方法はありますか? または単にすべてのパラメータを sqlparameter クラスに追加しますか?? 以下のように

 SqlCommand command = new SqlCommand("inserting", con);
 command.CommandType = CommandType.StoredProcedure;
 command.Parameters.Add(new SqlParameter("@Firstname", SqlDbType.NVarChar).Value = TextBox1.Text;
4

7 に答える 7

8

文字列と DbType を受け取るオーバーロードがあるため、Parameter コンストラクターを呼び出す必要がないことに注意しParamters.Addてください。現在使用している行を置き換えて、新しいパラメーターを追加できます。

command.Parameters.Add(new SqlParameter("@Firstname", SqlDbType.NVarChar)).Value = TextBox1.Text;

次の短い (ただし機能的には同等の) 行を使用します。

command.Parameters.Add("@Firstname", SqlDbType.NVarChar).Value = TextBox1.Text;

さらにパラメーターを追加する場合は、次のようにコマンドのParametersプロパティに追加するだけです。

SqlCommand command = new SqlCommand("inserting", con);
command.CommandType = CommandType.StoredProcedure;
command.Parameters.Add("@Firstname", SqlDbType.NVarChar).Value = TextBox1.Text;
command.Parameters.Add("@Lastname", SqlDbType.NVarChar).Value = TextBox2.Text;

それとは別に、Parameters.AddWithValueを使用してみましたか? これは、列のデータ型が C# の値の型にマップされる場合に使用できます。C# から SQL Server のデータ型へのマッピングについては、こちらを参照してください。

次のように使用します。

// Assume your sproc has a parameter named @Age that is a SqlInt32 type
int age = 5;
// Since age is a C# int (Int32), AddWithValue will automatically set
// the DbType of our new paramter to SqlInt32.
command.Parameters.AddWithValue("@Age", 5);

SqlDbType を指定する必要がある場合、AddWithValue は追加したばかりのパラメーターを返すので、最後に DbTypeプロパティを設定するステートメントを追加するだけで済みますが、この時点では、元の .Add をそのまま使用した方がよいでしょう。機能と値の設定。

command.Parameters.AddWithValue("@Firstname", TextBox1.Text).DbType = SqlDbType.NVarChar;
于 2012-06-15T03:34:00.587 に答える
5

タイプSqlParameterの配列を使用し、それをSqlCommandに挿入します

SqlCommand Comm = new SqlCommand("Command text", new SqlConnection("Connection String");
SqlParameter[] param = {new SqlParameter("@Name","Value"), 
                        new SqlParameter("@Name","Value"),
                        ........
                        };
Comm.Parameters.AddRange(param);
于 2012-06-15T05:15:28.667 に答える
1

command.Parameters.Addメソッドを複数回呼び出すだけです。

 SqlCommand command = new SqlCommand("inserting", con);
 command.CommandType = CommandType.StoredProcedure;

 command.Parameters.Add("@Firstname", SqlDbType.NVarChar, 100).Value = TextBox1.Text;
 command.Parameters.Add("@Lastname", SqlDbType.NVarChar, 100).Value = TextBox2.Text;
 command.Parameters.Add("@City", SqlDbType.NVarChar, 100).Value = TextBox3.Text;
 command.Parameters.Add("@ID", SqlDbType.Int).Value = Convert.ToInt32(TextBox4.Text);
 ....... and so on .....
于 2012-06-15T05:21:26.843 に答える
0

dapper-dot-netを使用できます

サンプルコード:

var dog = connection.Query<Dog>("select Age = @Age, Id = @Id", new { Age = (int?)null, Id = guid });

挿入例:

connection.Execute(@"insert MyTable(colA, colB) values (@a, @b)",
    new[] { new { a=1, b=1 }, new { a=2, b=2 }, new { a=3, b=3 } }
  ).IsEqualTo(3); // 3 rows inserted: "1,1", "2,2" and "3,3"
于 2012-06-15T03:43:12.267 に答える
0
  // Mention size of the nvarchar column   , here i give 500 , you can use its length for @Firstname as you mention in database according to your database 

   SqlCommand command = new SqlCommand("inserting", con);
 command.CommandType = CommandType.StoredProcedure;
 command.Parameters.Add(new SqlParameter("@Firstname", SqlDbType.NVarChar,500).Value = TextBox1.Text;
于 2016-09-09T10:17:34.557 に答える