[英]How to insert data from multiple tables to multiple tables by using SSIS?
[英]how to insert data into multiple tables at once
我想知道我編寫的代碼是否是將數據插入多個表中的最佳方法。
對我來說,這是我第一次使用代碼將數據插入數據庫。
在我總是使用visual studio的工具之前做到這一點。
所以我有1個文本框,當我輸入產品名稱並按下保存按鈕時,我將產品保存到3個表格中。
我的代碼有效,但這是一個很好的方法嗎?
有沒有更好的方法呢?
private void SaveButton_Click(object sender, EventArgs e)
{
if (AddProductTables.Text != "")
{
try
{
String ConnectionString = @"Data Source=(LocalDB)\v11.0;AttachDbFilename=C:\DataBase\MyStock.mdf;Integrated Security=True;Connect Timeout=30";
SqlConnection myconnection = new SqlConnection(ConnectionString);
myconnection.Open();
SqlCommand StockCommand = myconnection.CreateCommand();
StockCommand.CommandText = "insert into Stock([Product]) values (@Product)";
StockCommand.Parameters.AddWithValue("@Product", AddProductTables.Text);
SqlCommand LandhuisMisjeCommand = myconnection.CreateCommand();
LandhuisMisjeCommand.CommandText = "insert into LandhuisMisje([Product]) values (@Product)";
LandhuisMisjeCommand.Parameters.AddWithValue("@Product", AddProductTables.Text);
SqlCommand TheWineCellarCommand = myconnection.CreateCommand();
TheWineCellarCommand.CommandText = "insert into TheWineCellar([Product]) values (@Product)";
TheWineCellarCommand.Parameters.AddWithValue("@Product", AddProductTables.Text);
StockCommand.ExecuteNonQuery();
LandhuisMisjeCommand.ExecuteNonQuery();
TheWineCellarCommand.ExecuteNonQuery();
myconnection.Close();
MessageBox.Show("Saved");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
else
{
MessageBox.Show("Insert Product name");
}
}
只需將所有語句放入一個以分號分隔的命令中:
using (var connection = new SqlConnection(ConnectionString))
using (var command = connection.CreateCommand())
{
connection.Open();
command.CommandText = @"insert into Stock([Product]) values (@Product);
insert into LandhuisMisje([Product]) values (@Product);
insert into TheWineCellar([Product]) values (@Product);"
command.Parameters.AddWithValue("@Product", AddProductTables.Text);
command.ExecuteNonQuery()
}
我建議你在TRANSACTION中做多個單獨的INSERT
BEGIN TRANSACTION
INSERT [...]
INSERT [...]
COMMIT TRANSACTION
你必須首先完成第一張桌子的程序,然后再完成另一張桌子,如下圖所示: -
sqlcmd.CommandText = "INSERT INTO Stock([Product]) values (@Product);
sqlcmd.Parameters.AddWithValue("@Product", AddProductTables.Text);
sqlCmd.ExecuteNonQuery();
sqlCmd.Parameters.Clear();
sqlcmd.CommandText = "INSERT INTO LandhuisMisje([Product]) values (@Product);
sqlcmd.Parameters.AddWithValue("@Product", AddProductTables.Text);
sqlCmd.ExecuteNonQuery();
通過這種方式,您可以通過單個命令變量實現,而不是像在代碼中那樣使用多個
在一個語句中編寫所有commandtext並使用SET而不是使用VALUES 。
SqlCommand command = myconnection.CreateCommand();
StockCommand.CommandText = "insert into Stock SET [Product]=@Product;
insert into LandhuisMisje SET [Product]=@Product;
insert into TheWineCellar SET [Product]=@Product";
command.Parameters.AddWithValue("@Product", AddProductTables.Text);
command.ExecuteNonQuery();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.