我正在尝试将一些数据插入到我的本地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" />
更新
解决了!我出于某种原因试图输出到另一个目录。结束重新创建解决问题的数据库。
答案 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 Core
或ASP.NET Zero
相关解决方案的人。
在我的情况下,我为ASP.NET Zero
使用了ASP.NET Core
个样板模板,但它没有插入数据库。经过几分钟的探索,我发现ASP.NET Zero
不会立即对ef
执行db
查询,而是在工作单元的末尾插入行。
通常,如果有异常,它将无法插入,它将记录到Logs
表中,如果它们失败,则可以查看带有异常的最新日志。
如果要立即执行查询,可以通过调用SaveChanges()
方法来强制其保存更改,如下所示:
await CurrentUnitOfWork.SaveChangesAsync();