Vb.net 数据库应用程序连接错误

Vb.net 数据库应用程序连接错误,vb.net,error-handling,connection,ms-access-2007,Vb.net,Error Handling,Connection,Ms Access 2007,我不断收到“未建立连接”错误。虽然我想,如果用sqlLink.Open和sqlCheck.Connection=sqlLink打开连接,这个错误就不会出现 Imports System.Data.OleDb Public Class StockAdd Dim path = System.Windows.Forms.Application.StartupPath Dim sqlLink As OleDbConnection Private Sub StockAdd_Load

我不断收到“未建立连接”错误。虽然我想,如果用
sqlLink.Open
sqlCheck.Connection=sqlLink
打开连接,这个错误就不会出现

Imports System.Data.OleDb
Public Class StockAdd
    Dim path = System.Windows.Forms.Application.StartupPath
    Dim sqlLink As OleDbConnection
    Private Sub StockAdd_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        sqlLink = New OleDbConnection
        sqlLink.ConnectionString = ("Provider=Microsoft.ACE.OLEDB.12.0;Data Source='C:\Users\will\Documents\Computing\ComputingProjectDatabase.accdb';")

    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim sqlCheck As New OleDbCommand
        Dim oleRdr As OleDbDataReader
        sqlLink.Open()
        Try
            Using sqlOrder As New OleDbCommand

                sqlCheck.Connection = sqlLink
                sqlCheck.CommandText = "SELECT count(*) FROM StockSystem WHERE [Stock ID] = @stockID"
                sqlCheck.Parameters.AddWithValue("@stockID", TextBox5.Text)

                oleRdr = sqlCheck.ExecuteReader()
                If oleRdr.HasRows = True Then
                    oleRdr.Read()
                    If oleRdr.Item(0) = 0 Then
                        sqlOrder.CommandText = "INSERT INTO StockSystem ([Stock ID], [Stock Price], [Stock Size], [Stock Quantity], [Stock Category]) VALUES ('" & TextBox5.Text & "','" & TextBox7.Text & "','" & TextBox6.Text & "','" & TextBox8.Text & "','" & TextBox9.Text & "')"
                        sqlOrder.ExecuteNonQuery()
                        MsgBox("Stock Details Stored.")
                    Else
                        MsgBox("Please check you have entered the correct data.")
                    End If
                End If
            End Using
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
        sqlLink.Close()
        Me.Close()
        Stock.Show()

    End Sub
End class

如果我的眼睛没有让我失望,那么就不要为sqlOrder命令设置连接。因此,它无法执行sql文本

请注意,您不能使用sqlLink连接,因为它由datareader使用。您需要一个新的连接对象(当然使用相同的连接字符串)

作为旁注,您的代码非常容易受到Sql注入的攻击。如果一个或多个文本框包含一个引号字符,则可能会出现严重问题


始终使用参数化查询作为COUNT()语句之前使用的查询

Ohhh,这太愚蠢了><对此表示抱歉..这是漫长的一天