使用C#將表內容複製到同一數據庫中的另一個表中。使用C#將表內容複製到同一數據庫中的另一個表中
我有一個數據庫(Baza
)與一些數據在兩個表NEW和OLD。我需要定期將新數據移動到舊數據表(在我做一些測量之後)。我需要在下一步比較這些數據。
我正在使用SQL Server CE機智Baza.sdf
文件。以任何複雜的方式將表格複製到表格中(一些循環會自動執行)?
感謝
使用C#將表內容複製到同一數據庫中的另一個表中。使用C#將表內容複製到同一數據庫中的另一個表中
我有一個數據庫(Baza
)與一些數據在兩個表NEW和OLD。我需要定期將新數據移動到舊數據表(在我做一些測量之後)。我需要在下一步比較這些數據。
我正在使用SQL Server CE機智Baza.sdf
文件。以任何複雜的方式將表格複製到表格中(一些循環會自動執行)?
感謝
出了什麼問題:
insert into [table] (field1, field2)
select field1, field2 from [table2] where (your conditions are met)
? :-)
因爲這是不支持CE,感謝@marc_s,你可以從NEW
表使用select
,然後insert
他們到OLD
表中獲取的記錄,然後遍歷初始記錄刪除行例如,通過ID從NEW
。
我做了:private void Check_Click(object sender,EventArgs e) {SqlCeConnection conn = new SqlCeConnection(「Data Source = \\ Program Files \\ MyProgram \\ Baza.sdf; Password ='password'」); conn.Open(); SqlCeCommand cmd = new SqlCeCommand(「insert into [3GOLD](ID,X1,X2,X3)select [ID],X1,X2,X3 from [3G]);」); cmd.Connection = conn; cmd.ExecuteNonQuery(); } catch(Exception msg) { MessageBox.Show(msg.ToString()); } conn.Close(); } – Robert
但是:但是我得到一個錯誤:解析查詢時出現錯誤[令牌行號= 1,令牌行偏移= 137,令牌出錯=]] – Robert
再次:我認爲重要的是看到OP使用SQL Server **精簡版**,我相信這不支持這樣的東西.... –
添加到什麼CodeCaster指出,
把他的代碼在一個StoredProcedure的和創建工作,對您選擇的一組間隔運行。 您可以將邏輯添加到存儲過程以檢查數據的有效性,並將其設置爲在數據不正確時通知您。如果您在問題中包含更具體的信息,可以給出示例。
我不認爲SQL Server ** Compact Edition **支持存儲過程...[請參閱SQL Server Compact和SQL Server之間的差異](http://msdn.microsoft.com/zh-cn/library/bb896140.aspx) –
ahh,沒有完全閱讀。剛剛看過SQL Server – mutek
我用這種方法解決了這個問題: 程序在循環表中逐行讀取新的行,每個值都變爲參數。我得到了8列,所以8個參數(7個整數和一個字符串) 接下來,每個參數都插入OLD表中。 Resuld也顯示在textBox1中:
SqlCeConnection conn = new SqlCeConnection("Data Source = \\Program Files\\My Program\\Program.sdf; Password ='mypassword'");
conn.Open();
try
{
SqlCeCommand cmd = new SqlCeCommand("SELECT * FROM [NEW]", conn);
SqlCeDataReader rdr = cmd.ExecuteReader();
cmd.Connection = conn;
cmd.ExecuteNonQuery();
while (rdr.Read())
{
int param1 = rdr.GetInt32(0);
int param2 = rdr.GetInt32(1);
int param3 = rdr.GetInt32(2);
int param4 = rdr.GetInt32(3);
int param5 = rdr.GetInt32(4);
int param6 = rdr.GetInt32(5);
int param7 = rdr.GetInt32(6);
string param8 = rdr.GetString(7);
textBox1.AppendText(" " + param1 + " " + param2 + " " + param3 + " " + param4 + " " + param5 + " " + param6 + " " + param7 + " " + param8);
textBox1.AppendText(System.Environment.NewLine);
SqlCeCommand ins = new SqlCeCommand("insert into [OLD] values ('" + param1 + "','" + param2 + "','" + param3 + "','" + param4 + "','" + param5 + "','" + param6 + "','" + param7 + "','" + param8 + "');");
ins.Connection = conn;
ins.ExecuteNonQuery();
}
}
catch (Exception msg)
{
MessageBox.Show(msg.ToString());
}
conn.Close();
如果你可以用一個單獨的實用程序(不C#代碼)生活,你應該檢查出[SQL精簡數據和架構腳本utilty(HTTP://exportsqlce.codeplex。 com /),它允許你將數據導出爲INSERT腳本,然後你可以針對你的目標數據庫運行 –
@marc_s,它是關於同一個數據庫中的兩個表,你的解決方案對我來說似乎有點矯枉過正。 – CodeCaster