1

2つのテーブルに同時にデータを挿入することは可能ですか?私の現在のページでは、1つのテーブルCarTabにのみデータを挿入するコマンドは1つだけです。

 SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["Connection"].ConnectionString);
    SqlCommand cmd = new SqlCommand("Insert into CarTab(Manufacture,Model,Plate,Color,Year,Service,Roadtax) Values (@manufactures,@models,@plates,@colors,@years,@services,@roadtaxs)", conn);

    cmd.CommandType = CommandType.Text;
    cmd.Parameters.AddWithValue("@manufactures", Label1.Text);
    cmd.Parameters.AddWithValue("@models", Label2.Text);
    cmd.Parameters.AddWithValue("@plates", Label3.Text);
    cmd.Parameters.AddWithValue("@colors", Label4.Text);
    cmd.Parameters.AddWithValue("@years", Label5.Text);
    cmd.Parameters.AddWithValue("@services", Label6.Text);
    cmd.Parameters.AddWithValue("@roadtaxs", Label7.Text);


    conn.Open();
    cmd.ExecuteNonQuery();

別のテーブル、TempTabを配置したい場合、コマンドは何ですか?ありがとう。

4

4 に答える 4

2

SQLコマンドに渡すテキスト内に2つの挿入クエリを記述するか、代わりにストアドプロシージャを記述して呼び出すことができます。

于 2012-09-11T05:36:01.740 に答える
0

質問に示されているものと同じコードを繰り返しますが、2番目のテーブルのクエリとパラメーターを変更します。また、データベース接続やコマンドなどのIDisposableリソースをusingステートメントでラップすることをお勧めします。

于 2012-09-11T05:36:03.033 に答える
0

マルチテーブル挿入は、INSERT..SELECTの拡張です。構文は次の形式です。

INSERT ALL|FIRST
[WHEN condition THEN] INTO target [VALUES]
[WHEN condition THEN] INTO target [VALUES]
...
[ELSE] INTO target [VALUES]
SELECT ...
FROM   source_query;

出典:http ://www.oracle-developer.net/display.php?id = 209

于 2012-09-11T05:36:47.540 に答える
0

あなたの答えには多くの可能な解決策があります。TRIGGERまず、テーブルのすべての挿入にを作成することをお勧めしますCarTab

次に、コマンドオブジェクトのを変更して、もう一度CommandText呼び出してみませんか?ExecuteNonQuery()

using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["Connection"].ConnectionString))
{
    string QueryA = "Insert into CarTab(Manufacture,Model,Plate,Color,Year,Service,Roadtax) Values (@manufactures,@models,@plates,@colors,@years,@services,@roadtaxs";
    string QueryB = "Insert into TempTab(Manufacture,Model,Plate,Color,Year,Service,Roadtax) Values (@manufactures,@models,@plates,@colors,@years,@services,@roadtaxs";

    using (SqlCommand cmd = new SqlCommand("", conn))
    {
        cmd.CommandType = CommandType.Text;
        cmd.CommandText = QueryA;
        cmd.Parameters.AddWithValue("@manufactures", Label1.Text);
        cmd.Parameters.AddWithValue("@models", Label2.Text);
        cmd.Parameters.AddWithValue("@plates", Label3.Text);
        cmd.Parameters.AddWithValue("@colors", Label4.Text);
        cmd.Parameters.AddWithValue("@years", Label5.Text);
        cmd.Parameters.AddWithValue("@services", Label6.Text);
        cmd.Parameters.AddWithValue("@roadtaxs", Label7.Text);

        try
        {
            conn.Open()
            cmd.ExecuteNonQuery();

            cmd.CommandText = QueryB;
            cmd.ExecuteNonQuery();
        }
        catch (SqlException e)
        {
            // put error here
        }
        finally
        {
            conn.Close();
        }
    }
}

最後に、Stored Procedure

CREATE PROCEDURE InsertRecord
@manufactures varchar(50),
@models varchar(50),
@plates varchar(50),
@colors varchar(50),
@years varchar(50),
@services varchar(50),
@roadtaxs varchar(50)
AS
BEGIN
        Insert into CarTab(Manufacture,Model,Plate,Color,Year,Service,Roadtax) 
        Values (@manufactures,@models,@plates,@colors,@years,@services,@roadtaxs)

        Insert into CarTab(Manufacture,Model,Plate,Color,Year,Service,Roadtax) 
        Values (@manufactures,@models,@plates,@colors,@years,@services,@roadtaxs)
END
GO

C#コードでは、

using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["Connection"].ConnectionString))
{

    using (SqlCommand cmd = new SqlCommand("InsertRecord", conn))
    {
        cmd.CommandType = CommandType.StoredProcedure;
        cmd.CommandText = QueryA;
        cmd.Parameters.AddWithValue("@manufactures", Label1.Text);
        cmd.Parameters.AddWithValue("@models", Label2.Text);
        cmd.Parameters.AddWithValue("@plates", Label3.Text);
        cmd.Parameters.AddWithValue("@colors", Label4.Text);
        cmd.Parameters.AddWithValue("@years", Label5.Text);
        cmd.Parameters.AddWithValue("@services", Label6.Text);
        cmd.Parameters.AddWithValue("@roadtaxs", Label7.Text);

        try
        {
            conn.Open()
            cmd.ExecuteNonQuery();
        }
        catch (SqlException e)
        {
            // put error here
        }
        finally
        {
            conn.Close();
        }
    }
}
于 2012-09-11T05:37:50.320 に答える