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

标签 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)

最佳答案

整个 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/

相关文章:

mysql - 基于 2 个 ID 列连接 2 个表是否可以?

COUNT(*) 小于 2 的 SQL 更新

SQL 使用 CMD 将数据从 .sql 文件插入到表中

database - 社交整合平台(facebook、twitter、openid)id 的数据类型是什么?

sql - 如何使用具有外键的表在 Django 中高效地编写 DISTINCT 查询

java - 在 Hibernate 中以字符串形式返回不同的 Criteria 结果

Sql Select top 2, bottom 2 and 6 随机记录

c# - 如何使用 Entity Framework 处理可选表?

mysql - 如何摆脱内部连接中的 OR 条件

mysql - 在 INSERT INTO 语句期间访问自动递增值