C# での SQL 挿入クエリ

  1. C# の単純なクエリメソッドを使用した SQL 挿入
  2. C# のパラメーター化されたクエリメソッドを使用した SQL 挿入

このチュートリアルでは、C# でデータベースにレコードを挿入する方法について説明します。

C# の単純なクエリメソッドを使用した SQL 挿入

単純なクエリメソッドは、C# で SQL の挿入クエリを使用してデータベーステーブルにデータを挿入できます。この方法は単純で実装が簡単ですが、安全ではありません。このメソッドでは、コードから SQL インジェクションを防ぐことはできません。次のコード例は、C# の単純なクエリメソッドを使用してデータベーステーブルにデータを入力する方法を示しています。

using System;
using System.Data.SqlClient;

namespace sql_insert
{
    class Program
    {
        static void Main(string[] args)
        {
            string connectionString = "Data Source=.\SQLEXPRESS;Initial Catalog=ComputerShop;Integrated Security=True";
            SqlConnection connection = new SqlConnection(@connectionString);
            string query = "INSERT INTO Person (Name,Salary) VALUES('Max','$1200')";
            SqlCommand command = new SqlCommand(query, connection);
            try
            {
                connection.Open();
                command.ExecuteNonQuery();
                Console.WriteLine("Records Inserted Successfully");
            }
            catch (SqlException e)
            {
                Console.WriteLine("Error Generated. Details: " + e.ToString());
            }
            finally
            {
                connection.Close();
            }
        }
    }
}

出力:

Records Inserted Successfully

上記のコードは、C# の単純なクエリメソッドを使用して、データベースの Person テーブルにデータを挿入します。

SqlConnection クラスは、データベースとの接続を作成します。接続文字列をパラメータとして受け取ります。

SqlCommand クラスは、次のような SQL コマンドを作成します。SQLServer データベースに対して実行されます。SqlConnection オブジェクトと SQL クエリをパラメータとして受け取ります。

connection.open() 関数データベースとの接続を開いてクエリを実行するために使用されます。データベースへの接続を開かずにクエリを実行することはできません。

最後に、command.ExecuteNonQuery() 関数は、挿入クエリを実行するために使用されます。command.ExecuteNonQuery() 関数は、クエリの影響を受ける行数を返します。エラーが発生した場合、command.ExecuteNonQuery() 関数は -1 を返します。

クエリを実行した後、connection.Close() 関数

C# のパラメーター化されたクエリメソッドを使用した SQL 挿入

パラメータ化されたクエリメソッドは、C# のパラメータで SQL挿入クエリを使用してデータベーステーブルにデータを挿入するために使用されます。挿入クエリのフィールドに代替パラメーターを指定してから、それらの代替パラメーターにデータを入力します。この方法は、SQL インジェクションからコードを保護するために推奨されます。次のコード例は、C# のパラメーター化されたクエリメソッドを使用してデータベーステーブルにデータを入力する方法を示しています。

using System;
using System.Data.SqlClient;

namespace sql_insert
{
    class Program
    {
        static void Main(string[] args)
        {
            string connectionString = "Data Source=.\SQLEXPRESS;Initial Catalog=ComputerShop;Integrated Security=True";
            SqlConnection connection = new SqlConnection(@connectionString);
            string query = "INSERT INTO Products (Name, Salary) VALUES(@Name, @Salary)";
            SqlCommand command = new SqlCommand(query, connection);

            command.Parameters.AddWithValue("@Name", "Max");
            command.Parameters.AddWithValue("@Salary", "$1200");

            try
            {
                connection.Open();
                command.ExecuteNonQuery();
                Console.WriteLine("Records Inserted Successfully");
            }
            catch (SqlException e)
            {
                Console.WriteLine("Error Generated. Details: " + e.ToString());
            }
            finally
            {
                connection.Close();
            }
        }
    }
}

出力:

Records Inserted Successfully

上記のコードは、C# のパラメーター化されたクエリメソッドを使用して、データベースの Person テーブルにデータを挿入します。残りのコードは、前の例と非常によく似ています。唯一の違いは、今回は insert クエリ内に値を書き込まないことです。command.Parameters.AddWithValue() 関数を使用して値を個別に入力します。