【问题标题】:C# Insert into database, no error and data is not inserted into databaseC#插入数据库,没有错误,数据没有插入数据库
【发布时间】:2017-05-06 23:23:01
【问题描述】:

我正在尝试将一些数据插入我的本地 SQL 数据库。该命令似乎运行成功,我没有收到任何错误,但由于某种原因,数据没有被插入到数据库中。我忘记了什么吗?

public void RegisterUser(string fName, string lName, string email, string password)
    {
        string conStr = ConfigurationManager.ConnectionStrings["DatabaseConnectionString"].ConnectionString;

        using (SqlConnection openCon = new SqlConnection(conStr))
        {
            string saveUser = "INSERT into Users (firstName,lastName,email,password,isAdmin) VALUES (@firstName,@lastName,@email,@password,@isAdmin)";

            using (SqlCommand querySaveUser = new SqlCommand(saveUser))
            {
                querySaveUser.Connection = openCon;
                querySaveUser.Parameters.AddWithValue("@firstName", fName);
                querySaveUser.Parameters.AddWithValue("@lastName", lName);
                querySaveUser.Parameters.AddWithValue("@email", email);
                querySaveUser.Parameters.AddWithValue("@password", password);
                querySaveUser.Parameters.AddWithValue("@isAdmin", 1);
                openCon.Open();
                querySaveUser.ExecuteNonQuery();
            }
        }
    }

连接字符串:

<connectionStrings>
<add name="DatabaseConnectionString" connectionString="Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\App_Data\Database.mdf;Integrated Security=True;"
  providerName="System.Data.SqlClient" />

更新:

已解决!由于某种原因,我试图输出到另一个目录。最终重新创建了解决问题的数据库。

【问题讨论】:

    标签: c# sql winforms


    【解决方案1】:

    int affected =  querySaveUser.ExecuteNonQuery();
    

    并设置调试点并观察受影响的值。

    根据MSDN“如果发生回滚,返回值也是-1。”

    【讨论】:

    • 受影响返回0
    【解决方案2】:

    如果您正在调试您的数据库副本,则会在 bin/Debug 文件夹中创建一个副本,因此您可能正在检查不同的数据库。检查这个 - https://visualstudiomagazine.com/blogs/tool-tracker/2012/05/dealing-with-local-databases-or-why-your-updates-dont-stick.aspx

    【讨论】:

      【解决方案3】:

      我检查了你的代码,它在我的系统中工作正常,但我已经更改了你的连接字符串,所以请修改你的连接字符串,然后检查我希望你的问题得到解决

      public void RegisterUser(string fName, string lName, string email, string password)
          {
              string conStr = ConfigurationManager.ConnectionStrings["DatabaseConnectionString"].ConnectionString;
      
              using (SqlConnection openCon = new SqlConnection(conStr))
              {
                  string saveUser = "INSERT into Users (firstName,lastName,email,password,isAdmin) VALUES (@firstName,@lastName,@email,@password,@isAdmin)";
      
                  using (SqlCommand querySaveUser = new SqlCommand(saveUser))
                  {
                      querySaveUser.Connection = openCon;
                      querySaveUser.Parameters.AddWithValue("@firstName", fName);
                      querySaveUser.Parameters.AddWithValue("@lastName", lName);
                      querySaveUser.Parameters.AddWithValue("@email", email);
                      querySaveUser.Parameters.AddWithValue("@password", password);
                      querySaveUser.Parameters.AddWithValue("@isAdmin", 1);
                      openCon.Open();
                      querySaveUser.ExecuteNonQuery();
                  }
              }
          }
      

      连接字符串:web.config

       <connectionStrings>
          <add name="DatabaseConnectionString" connectionString="Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\Database.mdf; Initial Catalog=Database.mdf; Integrated Security=True;" providerName="System.Data.SqlClient" />
          </connectionStrings>
      

      【讨论】:

        【解决方案4】:

        它可能对寻找 Entity Framework CoreASP.NET Zero 相关解决方案的人有所帮助。

        在我的情况下,我使用 ASP.NET Zero 样板模板为 ASP.NET Core 并且它没有插入到数据库中。经过几分钟的探索,我发现ASP.NET Zero 不会立即对db 执行ef 查询,而是在工作单元的末尾插入行。

        通常情况下,如果有异常则插入失败,它会记录到Logs表中,如果失败,你可以看到最新的异常日志。

        如果您想立即执行查询,可以通过调用SaveChanges() 方法强制它保存更改,如下所示:

        await CurrentUnitOfWork.SaveChangesAsync();
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-06-07
          • 1970-01-01
          • 2017-11-02
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多