2012-04-30 32 views
2

在我的數據庫中,我有一個包含主鍵標識列和其他3列的表,如下所示。嘗試將手動數據表保存到我的SQL Server CE表中

我想手動創建一個DataTable並將其保存到我的SQL Server CE數據庫。任何人都可以幫我調整我的代碼嗎?

DataTable table1 = new DataTable("MyTable1"); 
table1.Columns.Add("LastName"); 
table1.Columns.Add("FirstName"); 
table1.Columns.Add("SortColumn"); 
table1.Rows.Add("Doe", "John", 1); 
table1.Rows.Add("Doe", "Mary", 2); 

DataSet ds = new DataSet("notCritical1"); 
ds.Tables.Add(table1); 

using (SqlCeConnection con = new SqlCeConnection(TestClickOnceApp.classes.ClassDatabase.m_connectionString)) 
{ 
    con.Open(); 
    SqlCeDataAdapter da = new SqlCeDataAdapter("Select * from MyTable1", con); 
    da.Fill(ds, "MyTable1"); 
    da.Update(ds, "MyTable1"); 
} 
+0

DataAdapters用於綁定控件(如DataGrid)值到DataSets。你的例子沒有控制;如果您沒有綁定到控件,則不需要DataAdapter。 –

回答

1

我沒有SqlCompact測試,但我相信你可以寫這樣的代碼

using (SqlCeConnection con = new SqlCeConnection(connectionString)) 
{ 
    con.Open(); 
    SqlCeCommand cmd = new SqlCeCommand("Select * from MyTable1 Where 1=0", con); 
    SqlCeDataAdapter da = new SqlCeDataAdapter(); 
    da.SelectCommand = cmd; 
    SqlCeCommandBuilder cb = new SqlCeCommandBuilder(da); 
    da.Update(table1); 
} 

無需使用數據集

更多細節的基礎上類方法DbDataAdapter.Update(DataTable t)可以是found here

+0

這正是我想要做的......因爲我想手動循環和操作數據:很多謝謝! – Mikey

+0

很高興能有所幫助。如果您發現我的答案有用,請按照常見問題[here](http://stackoverflow.com/faq#howtoask)和[here](http://meta.stackexchange.com/questions/5234)中的說明升級或接受/ how-does-accepting-an-answer-work/5235) – Steve

+0

哈哈,我試着Upvote,但我想我太新了,沒有任何可信度 – Mikey

0

如果我正確地理解了你,你試錯了。你必須執行一條SQL語句。 DataTable/DataSet不代表數據庫本身。 也許這可以幫助你link

3

根本不需要數據集。只需使用INSERT即可將記錄存入數據庫。它應該看起來像這樣:

using (SqlCeConnection connection = new SqlCeConnection(connectionString) 
{ 
    connection.Open(); 
    SqlCeCommand command = connection.CreateCommand(); 

    command.CommandText = "INSERT INTO <TableName> LastName, FirstName, SortColumn VALUES 'Doe', 'John', '1'"; 
    command.ExecuteNonQuery(); 

    connection.Close(); 
} 
相關問題