Работа над проектом WinForm с использованием SQL Server.
В настоящее время у моего MusicPlayerDB.mdf
свойство Copy to Output Directory
установлено на Copy if newer
.
После запуска моего InsertIntoDB
Я закрываю Winform и продолжаю проверять таблицу в Server Explorer. Но, похоже, моя таблица не была обновлена. Но если я пойду, чтобы проверить Bin/Debug
и проверить MusicPlayerDB.mdf
, данные там есть.
Как лучше всего это исправить? Я видел другие комментарии, в которых говорилось об использовании абсолютного пути .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