我很困惑为什么我添加的数据没有保存到数据库中。
当我的程序运行时,更新DataGridView
中显示的数据没有问题,但是当我关闭程序时,添加的数据会消失。
我试图显示表数据,但没有添加新数据。你能告诉我这是什么问题吗?
这是我的代码:
Dim con As New SqlClient.SqlConnection
Dim cmd As New SqlClient.SqlCommand
Dim adaptor As New SqlClient.SqlDataAdapter
Dim dataset As New DataSet
con.ConnectionString = ("Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\Database1.mdf;Integrated Security=True")
con.Open()
cmd.CommandText = "INSERT INTO [Table](FirstName,LastName,MI,Address,Email) VALUES(@FN,@LN,@MI,@AD,@EM)"
cmd.Connection = con
cmd.Parameters.Add("@FN", SqlDbType.VarChar).Value = TextBox1.Text
cmd.Parameters.Add("@LN", SqlDbType.VarChar).Value = TextBox2.Text
cmd.Parameters.Add("@MI", SqlDbType.VarChar).Value = TextBox3.Text
cmd.Parameters.Add("@AD", SqlDbType.VarChar).Value = TextBox4.Text
cmd.Parameters.Add("@EM", SqlDbType.VarChar).Value = TextBox5.Text
cmd.ExecuteNonQuery()
MsgBox("Added!")
con.Close()
Me.TableTableAdapter.Fill(Me.Database1DataSet.Table)
答案 0 :(得分:1)
整个 AttachDbFileName = 方法存在缺陷 - 充其量!在Visual Studio中运行应用程序时,它将复制.mdf
文件(从App_Data
目录到输出目录 - 通常是.\bin\debug
- 应用程序运行的地方)和最有可能,您的INSERT
工作正常 - 但您最后只是查看错误的.mdf文件!
如果你想坚持这种方法,那么尝试在myConnection.Close()
调用上设置一个断点 - 然后用SQL Server Mgmt Studio Express检查.mdf
文件 - 我几乎可以肯定你的数据就在那里。
我认为真正的解决方案是使用管理工具(如SSMS Express)在服务器上创建数据库,给它一个逻辑名称(例如{ {1}}),然后使用逻辑数据库名称(在服务器上创建时给定)连接到它。不要乱用物理数据库文件和用户实例。在这种情况下,您的连接字符串将类似于:
MyDatabase
其他一切都完全与之前相同......
另请参阅Aaron Betrand的博客文章Bad Habits to Kick - using AttachDbFileName以获取更多背景信息