![](/img/trans.png)
[英]How do I update my database without having to wipe it each time I save data to it
[英]How do I save data in my database?
我用数据库中的数据做了一个datagridview,然后我有3种不同的表单,包括插入数据,删除数据等。
问题是,当我尝试插入数据并重新启动程序时,数据不会被保存。
这是我的代码:
SqlConnection con = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Database1.mdf;Integrated Security=True;User Instance=True");
con.Open();
string sql = "INSERT INTO Elevi (Nume, Prenume, SportulPracticat) VALUES(@nume, @prenume, @sport)";
using (SqlCommand cmd = new SqlCommand(sql, con))
{
cmd.Parameters.AddWithValue("@nume", textBox1.Text);
cmd.Parameters.AddWithValue("@prenume", textBox2.Text);
cmd.Parameters.AddWithValue("@sport", textBox3.Text);
cmd.ExecuteNonQuery();
}
con.Close();
整个User Instance和AttachDbFileName =方法存在缺陷 - 充其量! 在Visual Studio中运行应用程序时,它将在.mdf
文件周围复制(从App_Data
目录复制到输出目录-通常是.\\bin\\debug
应用程序运行所在的位置),并且很可能 INSERT
可以正常工作-但最后您只是看错了.mdf文件 !
如果你想坚持这种方法,那么尝试在myConnection.Close()
调用上设置一个断点 - 然后用SQL Server Mgmt Studio Express检查.mdf
文件 - 我几乎可以肯定你的数据在那里。
我认为真正的解决方案是
安装SQL Server Express(并且您已经完成了此操作)
安装SQL Server Management Studio Express
在SSMS Express中创建数据库,给它一个逻辑名称(例如YourDatabase
)
使用其逻辑数据库名称 (在服务器上创建时提供)连接到该数据库 -并且不要弄乱物理数据库文件和用户实例。 在这种情况下,您的连接字符串将类似于:
Data Source=.\\\\SQLEXPRESS;Database=YourDatabase;Integrated Security=True
和其他一切是完全一样的前...
另请参阅亚伦·贝特朗(Aaron Bertrand)出色的博客文章不良习惯:使用AttachDbFileName获取更多背景信息。
我无法发现任何错误。 也许您正在寻找错误的代码。 如果idata在启动调试时从db中消失,那么你应该看看之前或之后会发生什么(你执行删除还是截断?)。
尝试添加COMMIT; 命令到SQL代码
SqlConnection con = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Database1.mdf;Integrated Security=True;User Instance=True");
SqlTransaction trans = con.BeginTransaction();
con.Open();
string sql = "INSERT INTO Elevi (Nume , Prenume , SportulPracticat) VALUES(@nume,@prenume,@sport)";
using (SqlCommand cmd = new SqlCommand(sql, con))
{
cmd.Transaction = trans;
cmd.Parameters.AddWithValue("@nume", textBox1.Text);
cmd.Parameters.AddWithValue("@prenume", textBox2.Text);
cmd.Parameters.AddWithValue("@sport", textBox3.Text);
cmd.ExecuteNonQuery();
trans.Commit();
}
con.Close();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.