我很困惑为什么我添加的数据没有保存到数据库中。
当我的程序运行时,更新 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)
最佳答案
整个 AttachDbFileName= 方法是有缺陷的 - 充其量!在 Visual Studio 中运行您的应用程序时,它将复制 .mdf
文件(从您的 App_Data
目录到输出目录 - 通常是 .\bin\debug
- 你的应用程序运行的地方)并且很可能,你的INSERT
工作得很好 - 但你只是在看错误的 .mdf 文件 最后!
如果您想坚持使用这种方法,请尝试在 myConnection.Close()
调用上放置一个断点 - 然后使用 SQL Server 检查 .mdf
文件Mgmt Studio Express - 我几乎可以肯定你的数据就在那里。
在我看来,真正的解决方案是使用管理工具(如 SSMS Express)在服务器上创建您的数据库,为其指定一个合乎逻辑的名称(例如 MyDatabase
),然后使用它的逻辑数据库名称(当您在服务器上创建它时给出)连接到它。不要乱用物理数据库文件和用户实例。在这种情况下,您的连接字符串将类似于:
Data Source=.\\SQLEXPRESS;Database=MyDatabase;Integrated Security=True
其他一切都完全和以前一样...
另请参阅 Aaron Betrand 的博客文章 Bad Habits to Kick - using AttachDbFileName了解更多背景信息
关于sql - 无法将数据保存到 SQL Server 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28763231/