使用VB .NET将数据插入SQL Server

Bel*_*llu 2 sql vb.net sql-server

我正在尝试将一些示例数据插入到sql server中.

我正在使用Visual Basic 2010 Express.

这是代码:

Public Sub insert()

    Dim myconnect As New SqlClient.SqlConnection
    myconnect.ConnectionString = "Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\DATABASE_NUOVO.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True"


    Dim mycommand As SqlClient.SqlCommand = New SqlClient.SqlCommand()
    mycommand.Connection = myconnect
    mycommand.CommandText = "INSERT INTO utenti (nome) VALUES ('mario')"
    myconnect.Open()

    Try
        mycommand.ExecuteNonQuery()
    Catch ex As System.Data.SqlClient.SqlException
        MsgBox(ex.Message)
    End Try
    myconnect.Close()
    MsgBox("Success")

End Sub
Run Code Online (Sandbox Code Playgroud)

代码似乎运行正常,但是当我在运行调试后查看数据库时,我看不到示例数据.

问题出在哪儿?

谢谢

mar*_*c_s 6

正如我之前在这个网站上所说的那样 - 整个用户实例和AttachDbFileName =方法都存在缺陷 - 充其量!Visual Studio将在.mdf文件周围复制,很可能,你的INSERT工作很好 - 但你最后只是查看错误的.mdf文件!

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

真正的解决办法在我看来,将

  1. 安装SQL Server Express(你已经完成了)

  2. 安装SQL Server Management Studio Express

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

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

    Data Source=.\\SQLEXPRESS;Database=Database_Nuovo;Integrated Security=True
    
    Run Code Online (Sandbox Code Playgroud)

    其他一切都和以前完全一样......

另外:检查目录中文件的Copy to Output Directory属性值(在Visual Studio Solution Explorer中找到它).DATABASE_NUOVO.mdfApp_Data

可能会发生什么(并且经常发生):

  • 当Visual Studio启动您的应用程序进行调试时,它会复制Database_Nuovo.mdf到运行该应用程序的输出目录(您的.\debug\bin目录)
  • INSERT然后运行该文件的副本,.mdf并正常工作
  • 你停止调试并再次去检查数据库文件-但是这一次,你看Database_Nuovo.mdfApp_Data目录- >和当然你插入的数据是不存在的,因为它被插入到不同的文件!