在SQL表中插入数据.找不到数据



VB express 2010

1个表单,1个文本框,1个按钮

我通过单击Project>add new item>service based database>创建了.mdf sql数据库文件,并将其命名为DXDB -表名为DXtest, 1列名为test

似乎代码工作,但是当我右键单击DXtest并单击显示表数据…那里什么也没有……它似乎并没有真正将数据插入到数据库中…

下面是完整的代码

Imports System.Data
Imports System.Data.SqlClient
Public Class Form1
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        Dim con As New SqlConnection
        Dim cmd As New SqlCommand
        Dim Tx1 As String
        Tx1 = TextBox1.Text
        con.ConnectionString = "Data Source=.SQLEXPRESS;AttachDbFilename=|DataDirectory|DXDB.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True"
        con.Open()
        cmd.Connection = con
        cmd.CommandText = "INSERT INTO DXTest(Test) VALUES(@Tx1)"
        cmd.Parameters.Add("@Tx1", SqlDbType.VarChar, 50).Value = Tx1
        cmd.ExecuteNonQuery()
        con.Close()
    End Sub
End Class

整个User Instance和AttachDbFileName=方法是有缺陷的-充其量!当你在Visual Studio中运行你的应用程序时,它会复制周围的.mdf文件(从你的App_Data目录到输出目录-通常是.bindebug -你的应用程序运行的地方)和最有可能,你的INSERT工作得很好-但你只是在看错误的。mdf文件在最后!

如果你想坚持这种方法,然后尝试在myConnection.Close()调用上设置一个断点-然后用SQL Server Mgmt Studio Express检查.mdf文件-我几乎可以肯定你的数据在那里。

在我看来,真正的解决方案
  1. 安装SQL Server Express(你已经这样做了)

  2. install SQL Server Management Studio Express

  3. SSMS Express中创建数据库,给它一个逻辑名称(例如DXDB)

  4. 使用它的逻辑数据库名(在服务器上创建时给出)连接到它,不要乱搞物理数据库文件和用户实例。在这种情况下,您的连接字符串类似于:

    Data Source=.SQLEXPRESS;Database=DXDB;Integrated Security=True
    

    和其他的都是和以前完全一样的

最新更新