Visual Studio 2010 Express を使用して、複数のテーブルとリレーションを含む Sql コンパクト データベース (sdf ファイル) を作成しました。このデータベースから、厳密に型指定されたデータセットを生成しました。
ここで、データセットにデータベースのコンテンツを入力したいと思います。そこで、次のコードを使用してデータベースに接続し、データセットを埋めました。
//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) を持つ「テーブル」という名前の新しいデータテーブルが作成されましたが、このデータテーブルの行数は 0 であることがわかりました。