0

我使用 Visual Studio 2010 Express 创建了一个 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())
        {
          ...
        }

你能告诉我为什么我的数据集没有从数据集中的表中获取行的原因吗?

编辑:我看到在我的数据集中创建了一个名为“表”的新数据表,其列与我请求的列(progstate)相同,但该数据表的 rowCount 为 0。

4

1 回答 1

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();
于 2012-12-05T10:55:52.407 回答