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
?
- 性能问题将大型数据集加载到c#GridView中
- 无法将类型为“Windows.UI.Xaml.Controls.ItemsControl”的对象强制转换为“Windows.UI.Xaml.Controls.Image”
- XmlSerializer.Deserialize List 项目
- 如何序列化async / await?
- 将.NET P / Invoke代码组织到Win32 API的最佳实践
- 可以将C#编译器配置为在显式转换可能导致数据丢失时发出警告吗?
- C#EmptyIfNull扩展,用于任何IEnumerable返回空派生类型
- 如何直接打印rdlc报告而不在C#中显示PrintDialog()?
- c#从form2添加标签