C#插入数据库,没有错误,数据没有插入数据库

时间:2017-05-06 23:23:02

标签: c# sql winforms

我正在尝试将一些数据插入到我的本地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" />

更新

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

4 个答案:

答案 0 :(得分:0)

int affected =  querySaveUser.ExecuteNonQuery();

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

根据MSDN&#34;如果发生回滚,返回值也为-1。&#34;

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

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>

答案 3 :(得分:0)

它可能会帮助寻求Entity Framework CoreASP.NET Zero相关解决方案的人。

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

通常,如果有异常,它将无法插入,它将记录到Logs表中,如果它们失败,则可以查看带有异常的最新日志。

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

await CurrentUnitOfWork.SaveChangesAsync();