ホームページ  >  記事  >  バックエンド開発  >  executenonqueryの使い方を詳しく解説

executenonqueryの使い方を詳しく解説

藏色散人
藏色散人オリジナル
2020-02-26 10:13:5610293ブラウズ

executenonqueryの使い方を詳しく解説

#executenonquery の使用法の詳細な説明

#C でデータベース テクノロジを操作するための ExecuteNonQuery の使用法

#最近、基本的な知識をキャッチアップする必要があり、C# でのデータベース操作テクニックをいくつか習得しました。今日は ExecuteNonQuery について学びました。自分のプロジェクト メンテナンス プロジェクトのコードとオンライン データ クエリを調べました。 ExecuteNonQuery の使い方は大体理解できたので、今後の参考のために簡単にまとめておきます。

ExecuteNonQuery メソッドは主にデータの更新に使用されますが、もちろん、ターゲット操作 (データベースの構造のクエリやテーブルなどのデータベース オブジェクトの作成など) の実行にも使用できます。通常、Dataset を使用せずに挿入、更新、および削除ステートメントを実行してデータベース内のデータを変更するために使用されます。 select ステートメントは ExecuteNonQuery() メソッドには適していません。

おすすめ「

C ビデオ チュートリアル

1. まず、ExecuteNonQuery の戻り値を見てみましょう:

1. Update の場合、挿入または削除ステートメントが正常に実行された場合、戻り値はコマンドによって影響を受けた行数です。影響を受けた行数が 0 の場合、戻り値は 0 になります。

2. すべての場合他のタイプのステートメントの場合、戻り値は -1;

3. ロールバックが発生した場合、戻り値も -1;

4. 一般に、戻り値が大きいかどうかを判断します。更新操作の場合は 0 よりも大きくても問題ありません。ただし、他の操作 [データ構造に対する操作 (テーブルの作成など)] の場合、操作が成功すると戻り値は -1 になりますが、注意してください。たとえば、データベースに新しいテーブルを追加する場合、作成が成功すると、-1 が返されます。失敗すると、例外が発生します。このような操作を実行する場合は、Try ステートメントと Catch ステートメントを使用して例外をキャッチすることをお勧めします。

2. コマンド オブジェクトが ExecuteNonQuery メソッドを通じてデータベースを更新するプロセスは非常に簡単で、手順は次のとおりです:

1. データベース接続を作成します;

2. Command オブジェクトを作成し、SQL Inser、Update、Delete クエリまたはストアド プロシージャを指定します。

3. Command オブジェクトをデータベース接続に接続します。

4. ExecuteNonQuery() を呼び出します。メソッド;

5. 接続を閉じます。

3. コード例の使用方法:

1. 1 つ目は非常に単純なクラスで、コマンド オブジェクトを使用して ExecuteNonQuery メソッドを通じて新しいデータベースと通信する方法を提供します。

public class ExecuteNonQueryClas
    {
        private static string connectionString = ConfigurationManager.ConnectionStrings["connectionString"].ConnectionString;

        //as this method provided static method, set the constructor to priviate to prevent create instance with 'new ExecuteNonQuery()'
        private ExecuteNonQueryClas()
        {

        }

        public static int ExecuteNonQuery(string commandText)
        {
            return ExecuteNonQuery(commandText, (SqlParameter[])null);
        }

        public static int ExecuteNonQuery(string commandText,SqlParameter[] commandParams)
        {
            //if connectionString is null, then throw exception
            if(connectionString == null || connectionString.Length == 0)
                throw new ArgumentNullException("connectionString");
            
            using(SqlConnection conn = new SqlConnection(connectionString))
            {
                SqlCommand cmd = new SqlCommand(commandText,conn);
                if (conn.State != ConnectionState.Open)
                    conn.Open();

                //check if the commandParams is not null, then attach params to command
                if(commandParams !=null)
                  AttachParameters(cmd,commandParams);

                int recordsAffected = cmd.ExecuteNonQuery();

                return recordsAffected;
            }

        }

        private static void AttachParameters(SqlCommand cmd,SqlParameter[] commandParams)
        {
            if (cmd == null) throw new ArgumentException("command");
            if (commandParams != null)
            {
                foreach (SqlParameter p in commandParams)
                {
                    if (p != null)
                    {
                        //// Check for derived output value with no value assigned
                        if ((p.Direction == ParameterDirection.InputOutput || p.Direction == ParameterDirection.Input) && (p.Value == null))
                        {
                            p.Value = DBNull.Value;
                        }
                        cmd.Parameters.Add(p);
                    }
                }
            }
        }
    }

2. main 関数を呼び出します:

static void Main(string[] args)
        {
            string userName = Console.ReadLine();
            string loginId = "user";
            string sqlString = "update Users set UserName = @name where LoginID= @loginID";
            SqlParameter[] parms ={
                                      new SqlParameter("@name",userName),
                                      new SqlParameter("@loginID",loginId)
                                       
                                  };

            int rlt = ExecuteNonQueryClas.ExecuteNonQuery(sqlString,parms);

            Console.WriteLine(rlt);
            Console.Read();
        }

上記は、ExecuteNonQuery メソッドの最も簡単な導入と使用例です。

以上がexecutenonqueryの使い方を詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。