2012-09-11 89 views
1

它可以將數據同時插入兩個表中嗎?在我目前的頁面中,只有一條命令只在一張表CarTab中插入數據。將數據插入到SQL中的兩個表中

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是什麼命令?謝謝。

回答

0

有許多可能的解決方案,你的答案。首先,我建議您在表CarTab上的每個插入內容上創建一個TRIGGER

二,爲什麼不改變你的命令對象的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#代碼,

​​3210
+0

吳宇森,Thnks .. u能請看到我的問題在這裏,我需要幫助。也許你可以給我一些想法。謝謝.http://stackoverflow.com/questions/12362882/value-in-dropdown-menu-removed –

+0

你不conn.Close()與使用(){} – Sasha

2

您可以在傳遞給SQL命令的文本中寫入2個插入查詢,也可以編寫存儲過程並調用它。

+0

+1想到SP :) –

0

重複與問題中顯示的代碼相同的代碼,但修改第二個表的查詢和參數。另外,我會建議您在using聲明中包裝IDisposable資源,例如數據庫連接和命令。

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

相關問題