【发布时间】:2019-09-29 21:44:50
【问题描述】:
使用 SQL Server 处理 WinForm 项目。
目前我的MusicPlayerDB.mdf 的Copy to Output Directory 属性设置为Copy if newer。
运行InsertIntoDB 后,我关闭 Winform 并继续在服务器资源管理器中检查表。但似乎我的表没有更新。但是如果我去检查Bin/Debug和检查MusicPlayerDB.mdf,数据就在那里。
解决此问题的最佳方法是什么?我见过其他 cmets 说要使用 .mdf 的绝对路径(或类似的东西),但如果可能的话,我想避免这种情况。
这是我的连接字符串,
private const String CONNECTION_STRING = "Data Source=(LocalDB)\\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\\MusicPlayerDB.mdf;Integrated Security=True";
这是我的插入代码:
private static void InsertIntoDB(List<string> userAccout)
{
String sqlQuery = "INSERT INTO dbo.UserAccount (UserName, UserPassword, PasswordQuestion, PasswordHint, PasswordKey) "
+ "VALUES (@UserName, @UserPassword, @PasswordQuestion, @PasswordHint, @PasswordKey);";
using(SqlConnection connection = new SqlConnection(CONNECTION_STRING))
{
connection.Open(); //open connection
using(SqlCommand command = new SqlCommand(sqlQuery, connection))
{
// set up command
using(SqlTransaction trans = connection.BeginTransaction())
{
try
{
command.Connection = connection;
command.Transaction = trans;
command.Parameters.AddWithValue("@UserName", userAccout[0]);
command.Parameters.AddWithValue("@UserPassword", userAccout[1]);
command.Parameters.AddWithValue("@PasswordQuestion", userAccout[2]);
command.Parameters.AddWithValue("@PasswordHint", userAccout[3]);
command.Parameters.AddWithValue("@PasswordKey", Convert.ToInt32(userAccout[4]));
int r = command.ExecuteNonQuery(); //execute the command
trans.Commit();
}
catch(Exception ex)
{
MessageBox.Show(ex.Message); //couldn't execute command
}
}
}
}
} //end of InsertIntoDB
【问题讨论】:
-
有没有办法让它每次都转到一个位置?我有点恼火数据不是持久的。
-
操作,抱歉将我的评论移到下面的完整答案中。
-
和往常一样 - 不要使用addwithvalue
-
哦!谢谢,不知道。
标签: c# sql-server winforms