从本地 Sql 压缩数据库更新强类型数据集



我用Visual Studio 2010 Express a Sql Compact Database (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。

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();

或者你不能像这样用数据适配器做到这一点:-

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();

最新更新