我使用Visual Studio 2010 Express创建了一个Sql Compact数据库(sdf-File),其中包含多个表和关系。我从这个数据库中生成了一个强类型数据集。
现在我想用数据库中的内容填充数据集。 所以我使用以下代码连接到数据库并填充数据集。
//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())
{
...
}
你能告诉我数据集没有从数据集中的表中获取行的原因吗?
编辑:我在我的数据集中看到,创建了一个名为'Table'的新数据表,其列号与我请求的列(progstate)相同,但此数据表的rowCount为0。答案 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();
或者您无法使用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();