0

SQLデータベースへの単純な挿入を実行しています。クエリはパラメータ化されていますが、この挿入を実行するメソッドを呼び出すと、必ずしも各パラメータを設定したくない場合があります。

次のように:

using (var sqlconnection = new SqlConnection(Globals.AFWideSettings.SqlConnectionString))
            {
                sqlconnection.Open();
                using (
                    var sqlcommand =
                        new SqlCommand(
                            "insert into DataActions (afuser, aftable, changetype, originaldata, newdata) values (@afuser, @aftable, @changetype, @originaldata, @newdata);",
                            sqlconnection))
                {

                    sqlcommand.Parameters.Add(new SqlParameter("afuser", userActions.AfUser));
                    sqlcommand.Parameters.Add(new SqlParameter("aftable", userActions.AfTable));
                    sqlcommand.Parameters.Add(new SqlParameter("changetype", userActions.ChangeType));
                    sqlcommand.Parameters.Add(new SqlParameter("originaldata", userActions.OriginalData));
                    sqlcommand.Parameters.Add(new SqlParameter("newdata", userActions.NewData));

                    sqlcommand.ExecuteNonQuery();
                }
                sqlconnection.Close();
            }
        }

データベースから出てくるヌル情報をテストしている場合は、次のようにします。

Id = getRecords.IsDBNull(0) ? -1 : getRecords.GetInt32(0)

sqlparametersでこれを行う同等の方法はありますか?私は困惑しています。

(私は各アイテムを個別にテストできることを知っています、私はただ効率的になりたいだけです)

どうもありがとう

4

3 に答える 3

2

まあ、それはあなたのSQLにあるので、各パラメータを入力する必要があります(面倒なフィールド/値を動的に削除したい場合を除きます)。

パラメータ値を設定するときは、NULL 合体演算子 (??)を使用します。

sqlcommand.Parameters.Add(
    new SqlParameter("afuser", userActions.AfUser ?? {insert default value here} ));
于 2013-01-02T21:51:44.557 に答える
0

DBNull 値を使用してそれを行うことができます

I would recommend using Parameters.AddWithValue() Method for example see the code below

sqlcommand.Parameters.AddWithValue("@afuser", userActions.AfUser ?? (object)DBNull.Value);

MSDN SqlParameterCollection.AddWithValue メソッド

于 2013-01-02T21:57:10.083 に答える
0

さて、基本的な構文は次のとおりです。

CREATE PROCEDURE NameOfProcedure
/*
I like to put modification history, purpose for the procedure and stuff like that in here.
It's not required though
*/
(
@afuser NVARCHAR(255) DEFAULT NULL
,@aftable INT DEFAULT NULL

すべての変数に対してこれを行います。整数フィールドと nvarchar フィールドの例を示しましたが、データ型が何であれ使用します。DEFAULT NULL ビットは、値が指定されていない場合は NULL を使用するという部分です。

)
AS
BEGIN

INSERT INTO DataActions (afuser, aftable, changetype, originaldata, newdata)
VALUES (@afuser, @aftable, @changetype, @originaldata, @newdata)

END
于 2013-01-02T21:47:18.817 に答える