无法将数据保存到SQL Server数据库

时间:2015-02-27 10:47:41

标签: sql sql-server database vb.net

我很困惑为什么我添加的数据没有保存到数据库中。

当我的程序运行时,更新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)

1 个答案:

答案 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以获取更多背景信息