2012-12-05 83 views
0

我使用Visual Studio 2010 Express創建了一個Sql Compact數據庫(sdf-File),其中包含多個表和關係。從這個數據庫中,我生成了一個強類型的數據集。從本地Sql Compact數據庫更新強類型數據集

現在我想用數據庫中的內容填充數據集。 所以我使用下面的代碼連接到數據庫並填充數據集。

//My strongly typed dataset 
localData = new LokalStorageDataSet(); 

//SqlCe-Connection 
localConnection = new SqlCeConnection(@"Data Source=|DataDirectory|\TempStorage.sdf; Password='xyc';Persist Security Info=True"); 

localConnection.Open(); 
SqlCeCommand command = new SqlCeCommand("SELECT * FROM progstates", localConnection); 
localDataAdapter = new SqlCeDataAdapter(command); 

localDataAdapter.Fill(localData); 

問題是沒有行被添加到我的數據集,雖然在數據庫中有行。 如果我使用一個SqlCeReader讀取SqlCeCommand的結果,讀者返回行:

SqlCeDataReader dr = command.ExecuteReader(); 

     while (dr.Read()) 
     { 
      ... 
     } 

你能不能給我,爲什麼我的數據集不從數據集中的表中獲取行的原因是什麼?

編輯:我看到在我的數據集一個新的DataTable中創建一個名爲「表」與像我要求的一個(progstate)同列,但也該表具有0

回答

1
EDITED ***** 

Try This :- 

//My strongly typed dataset 
localData = new LokalStorageDataSet(); 

//SqlCe-Connection 
localConnection = new SqlCeConnection(@"Data Source=|DataDirectory|\TempStorage.sdf; Password='xyc';Persist Security Info=True"); 


SqlCeCommand command = new SqlCeCommand("SELECT * FROM progstates", localConnection); 

localConnection.Open(); 

var dataReader = command.ExecuteReader(); 

localData.Load(dataReader,LoadOption.Upsert,localData.Tables[0]); 

localConnection.Close(); 

一個rowCount時或者你不能這樣用DataAdapter這樣做: -

localDataAdapter = new SqlCeDataAdapter(); 

SqlCeCommand command = new SqlCeCommand("SELECT * FROM progstates", localConnection); 

localDataAdapter.SelectCommand = command; 

localConnection.Open(); 

localDataAdapter.SelectCommand.ExecuteNonQuery(); 
localDataAdapter.Fill(localData.Tables[0]); 

localConnection.Close(); 
+0

嗯這個作品,謝謝!但是爲什麼它不適用於SqlCeDataAdapter?如果我可以使用適配器,我更喜歡它。當我將數據集中的數據寫回到數據庫時(使用dataAdapter.Update(dataset);),我也必須使用它。不幸的是,這不起作用。 :( – Mossos

+0

我會盡快更新。 – Derek

+0

嗯,你能描述一下這個方法嗎?我在數據集類中找不到合適的方法。 – Mossos

相關問題