小编典典

C#-ExecuteNonQuery()无法与SQL Server CE一起使用

sql

我得到了用户输入的一些数据,这些数据应该添加到数据库文件(.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如果查询成功,它应该返回,对吗?

最后,他返回1,但是如果我浏览表数据,则查询应添加的数据不存在。

那这怎么了?

笔记。如果您认为问题是连接:一旦获得一些使用该连接功能的Select语句,SQLCEConnect()
它们都可以很好地工作,那么我就看不到问题出在哪里。

提前致谢。


阅读 214

收藏
2021-04-07

共1个答案

小编典典

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

但这不是一个好习惯,因为一旦部署,程序文件夹就无法写到您的应用程序(这可能是问题所在,您已经部署了吗?)。相反,数据库文件应位于您的appdata文件夹中。

2021-04-07