我得到了用户输入的一些数据,这些数据应该添加到数据库文件(.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)函数来插入数据。runningExecuteNonQuery()应该在运行查询后返回受影响的行数。因此,1如果查询成功,它应该返回,对吗?
AdicionarAuditorio(string Nome, int Capacidade)
ExecuteNonQuery()
1
最后,他返回1,但是如果我浏览表数据,则查询应添加的数据不存在。
那这怎么了?
笔记。如果您认为问题是连接:一旦获得一些使用该连接功能的Select语句,SQLCEConnect() 它们都可以很好地工作,那么我就看不到问题出在哪里。
SQLCEConnect()
提前致谢。
您确定要查看正确的文件吗?在VS中构建应用程序时,它会将SDF文件作为内容复制到目标文件夹,因此项目中的数据库不会反映任何更新。您的代码正在那里获取文件位置。
但这不是一个好习惯,因为一旦部署,程序文件夹就无法写到您的应用程序(这可能是问题所在,您已经部署了吗?)。相反,数据库文件应位于您的appdata文件夹中。