6

customer_id2 つの列を持つテーブルを使用していますcustomer_name

customer_nameはシンプルvarcharcustomer_id、自動インクリメント主キーです。

customer_nameC# アプリケーションを使用して を挿入し、 の値を取得したいと考えていますcustomer_id

挿入するだけで簡単に解決

using (SqlConnection connection = new SqlConnection(AppConstants.ConnectionString))
{
    using (SqlCommand command = new SqlCommand("INSERT INTO custom_customer (customer_name) VALUES (@name);"))
    {
        command.Parameters.Add(new SqlParameter("name", customer));
        connection.Open();
        command.ExecuteNonQuery();
        connection.Close();
    }
}

OUTPUT値を取得するために使用できるステートメントのドキュメントをいくつか見つけました。

正しい構文は次のようになると思います

INSERT INTO custom_customer (customer_name) 
OUTPUT Inserted.customer_id 
VALUES (@name);

そして、私は使用する必要があると思います

command.ExecuteReader();

しかし、私は立ち往生しています。クエリから値を取得するにはどうすればよいですか?

4

4 に答える 4

4

ExecuteScalar 代わりに使用できます

int id = (int) command.ExecuteScalar();
于 2013-12-04T17:07:45.287 に答える
3

まず、 を使用しExecuteNonQueryて操作を記述します。Parametersサンプルの出力パラメーターとしてパラメーターを設定したため、コマンドを実行した後、コレクションからパラメーターを読み取ることができます。

command.Parameters["name"].Direction = System.Data.ParameterDirection.Output;

command.ExecuteNonQuery();

object name = command.Parameters["name"].Value;

Id挿入後に ID 列が生成したものを知りたい場合はSCOPE_IDENTITY()、sql コマンドを使用し、ExecuteScalar()コマンドの結果を取得するために使用できます。

int id;
using (SqlConnection connection = new SqlConnection(AppConstants.ConnectionString))
{
    string sql = @"INSERT INTO custom_customer (customer_name) 
                                        VALUES (@name); 
                   SELECT SCOPE_IDENTITY();"

    using (SqlCommand command = new SqlCommand(sql))
    {
        command.Parameters.Add(new SqlParameter("name", customer));
        connection.Open();
        id = (int) command.ExecuteScalar();
        connection.Close();
    }
}
于 2013-12-04T17:08:16.390 に答える
2

ExecuteScalar()を取得するには、次のように呼び出す必要があります。ID

int ID= (int) Command.ExecuteScalar();
于 2013-12-04T17:08:09.833 に答える
1
using (SqlConnection connection = new SqlConnection(AppConstants.ConnectionString))
using (SqlCommand command = new SqlCommand("INSERT INTO custom_customer (customer_name) VALUES (@name);SELECT SCOPE_IDENTITY();"))
{
    command.Parameters.Add(new SqlParameter("name", customer));
    connection.Open();
    int id= (int)Command.ExecuteScalar();
}
于 2013-12-04T17:18:22.803 に答える