C# 从本地Sql Compact数据库更新强类型数据集

C# 从本地Sql Compact数据库更新强类型数据集,c#,ado.net,dataset,sql-server-ce,C#,Ado.net,Dataset,Sql Server Ce,我使用Visual Studio 2010 Express创建了一个Sql Compact数据库(sdf文件),其中包含多个表和关系。从这个数据库中,我生成了一个强类型数据集 现在我想用数据库中的内容填充数据集。 因此,我使用以下代码连接到数据库并填充数据集 //My strongly typed dataset localData = new LokalStorageDataSet(); //SqlCe-Connection localConnection = new SqlCeConnec

我使用Visual Studio 2010 Express创建了一个Sql Compact数据库(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())
        {
          ...
        }
你能告诉我为什么我的数据集不能从数据集中的表中获取行吗

编辑:我看到在我的数据集中创建了一个名为“Table”的新数据表,其列与我请求的列(progstate)相同,但该数据表的行数为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();
或者,您不能像这样使用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();

嗯,这很有效,谢谢!但是为什么它不能与SqlCeDataAdapter一起工作呢?如果我能使用适配器,我会更喜欢它。我还必须在将数据集中的数据写入数据库时使用它(使用dataAdapter.Update(dataset);)。不幸的是,这也不起作用(嗯,你能描述一下实现这一点的方法吗?我在dataset类上找不到合适的方法。使用DataAdapter的更新方法,是你需要自己探索的另一件事,它与你在文章中的问题无关。