我正在尝试通过用户输入将注释保存到数据库中,但我的代码没有将其保存到数据库中。
我打算检查用户输入以及功能。
SqlConnection con = database.GetConnection();
SqlCommand command = new SqlCommand("INSERT INTO notities (notities_gebruiker, notities_datum, notities_doeldatum, notities_bericht) values(@notities_gebruiker, @notities_datum, @notities_doeldatum, @notities_bericht)", con);
command.Parameters.AddWithValue("@notities_gebruiker", this.gebruikerid.ToString());
command.Parameters.AddWithValue("@notities_datum", DateTime.Now);
command.Parameters.AddWithValue("@notities_doeldatum", DateTime.ParseExact(this.targetDate.Text, "dd/MM/yyyy", null));
command.Parameters.AddWithValue("@notities_bericht", this.Note.Text);
con.Open();
command.ExecuteNonQuery();
con.Close();
initialiseListBox();
发生的事情是,无论何时我关闭我的应用程序,数据库都会丢失它保存的值并返回到原始状态。我可以手动添加项目..
编辑:它通过应用程序回滚我添加的行,但是如果我继续运行,我可以从我保存的数据库中提取数据。
答案 0 :(得分:1)
您忘记提交刚刚插入的数据。使用SqlTransaction类开始事务:
SqlTransaction myTransaction = con.BeginTransaction();
command.ExecuteNonQuery();
myTransaction.Commit();
最好使用Using语句确保在代码块完成后处理连接,命令和事务,而不是手动调用Close()方法:
Using (SqlConnection con = database.GetConnection())
{
con.Open();
Using (SqlCommand command = new SqlCommand("sqlhere"))
{
Using (SqlTransaction myTransaction = con.BeginTransaction())
{
//your code here
}
}
}
SqlTransaction类:
http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqltransaction(v=vs.110).aspx
关于使用陈述的简洁文章:
http://www.codeproject.com/Articles/6564/Understanding-the-using-statement-in-C
答案 1 :(得分:0)
查找包含bin / debug文件夹中数据的数据库副本。
避免这种情况的最佳方法是在连接字符串中使用完整路径并避免使用| DataDirectory |在调试时