C# – ExecuteNonQuery()不能与SQL Server CE一起使用

我得到了一些应该添加到数据库文件(.sdf)的用户输入的数据。 我选择了Sql Server CE,因为这个应用程序非常小,我没有看到需要使用基于服务的数据库。

好吧,无论如何。

这里是代码:

public class SqlActions { string conStr = String.Format("Data Source = " + new System.IO.FileInfo(System.Reflection.Assembly.GetExecutingAssembly().Location).DirectoryName + "\\basedados.sdf"); public SqlCeConnection SQLCEConnect() { SqlCeConnection Connection = new SqlCeConnection(conStr); Connection.Open(); return Connection; } public Boolean AdicionarAuditorio(string Nome, int Capacidade) { string Query = "INSERT INTO auditorios (nome, capacidade) VALUES (@Nome, @Capacidade)"; using (var SQLCmd = new SqlCeCommand(Query, SQLCEConnect())) { SQLCmd.Parameters.AddWithValue("@Nome", Nome); SQLCmd.Parameters.AddWithValue("@Capacidade", Capacidade); if (SQLCmd.ExecuteNonQuery() == 1) { return true; } else { return false; } } } } 

我使用AdicionarAuditorio(string Nome, int Capacidade)函数来插入数据。 运行ExecuteNonQuery() ,它应该在运行查询后返回受影响的行数。 所以如果查询成功则应返回1 ,对吧?

最后他返回1,但如果我浏览表数据,那么查询应该添加的数据就不存在了。

那么这里有什么不对吗?

注意。 如果你认为问题是连接:一旦我得到一些使用该连接函数SQLCEConnect() Select语句,我看不出问题为什么它们都运行良好。

提前致谢。

你确定你正在查看正确的文件吗? 在VS中构建应用程序时,它会将SDF文件作为内容复制到目标文件夹,因此项目中的数据库不会反映任何更新。 您的代码正在那里获取文件位置。

这不是一个好习惯,因为一旦部署,程序文件夹就无法写入您的应用程序(这可能是问题 – 您是否已部署?)。 相反,数据库文件应驻留在appdata文件夹中。

是否有可能在不调用transactionScope.Complete()情况下在TransactionScope调用AdicionarAuditorio