我具有以下的C#代碼:如果SQL命令在這種情況下被組合 - C#
基本上我選擇從表A /數據庫1中的一行和表A /插入的Database2它。
然後,我再次打開連接並從TableB/Database1(使用從TableA/Database1檢索到的newID)中選擇多行並插入到TableB/Database2中。
我的問題是這樣做的正確方法?還是應該將這些結合起來?如果這些應該結合起來,任何人都可以告訴我最好的方法來實現這一目標嗎?
int newID = 0;
using (var con1 = new SqlConnection(conString1))
using (var con2 = new SqlConnection(conString2))
{
con1.Open();
con2.Open();
using (var selectCommand = new SqlCommand(sqlSelect, con1))
{
using (var reader = selectCommand.ExecuteReader())
{
try
{
if (reader != null)
if (reader.Read())
{
using (var insertCommand = new SqlCommand(sqlInsert, conTarget))
{
for (int i = 0; i < reader.FieldCount; i++)
{
insertCommand.Parameters.AddWithValue(
"@" + reader.GetName(i), reader[i]);
}
newID = (int)insertCommand.ExecuteScalar();
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
finally
{
reader.Close();
}
}
}
}
我傳遞NEWID作爲價值的選擇例子之一:
Select Id, student as newID, Class from Student where class = 10
using (var con1 = new SqlConnection(ConString1))
{
con1.Open();
var cmd = new SqlCommand(query , con1);
var reader = cmd.ExecuteReader();
using (var con2 = new SqlConnection(conString2))
{
con2.Open();
using (var sbc = new SqlBulkCopy(conString2))
{
sbc.BulkCopyTimeout = 2000;
sbc.DestinationTableName = "student";
try
{
if (reader != null)
sbc.WriteToServer(reader);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
finally
{
reader.Close();
}
}
}
}
這兩個數據庫都在同一臺服務器上? – Sankara