簡體   English   中英

帶有訪問權限的INSERT INTO語句中的vb.net語法錯誤

[英]vb.net Syntax error in INSERT INTO Statement with access

插入時出現錯誤,有人可以看嗎? 表: 在此處輸入圖片說明

VB.NET

   Dim Name As String = txtName.Text
    Dim JoinDate As String = dpJoinDate.Value
    Dim DOB As String = dpDOB.Value
    Dim ParentsName As String = txtParentsName.Text
    Dim School As String = txtSchool.Text
    Dim STD As String = txtSTD.Text
    Dim Address As String = txtAddress.Text
    Dim EMail As String = txtEMail.Text
    Dim Mobile1 As String = txtMobile1.Text
    Dim Mobile2 As String = txtMobile2.Text
    Dim DurationStart As Date = dpDurationStart.Value
    Dim DurationEND As Date = dpDurationEND.Value
    Dim Fees As Decimal = Decimal.Parse(0.0)
    Dim MaterialFees As Decimal = Decimal.Parse(0.0)
    Dim LateFees As Decimal = Decimal.Parse(0.0)
    Dim NextRenewal As Date = dpNextRenewal.Value
    Dim Centre As String = cbCentre.Text
    Dim Coach As String = cbCoach.Text
    Dim picture As String = lblFileName.Text

    Try
        Fees = Decimal.Parse(txtFees.Text)
    Catch

    End Try

    Try
        MaterialFees = Decimal.Parse(txtMaterialFees.Text)
    Catch

    End Try

    Try
        LateFees = Decimal.Parse(txtLateFees.Text)
    Catch

    End Try

    Dim Cmd As OleDbCommand
    Dim SQL As String
    Dim objCmd As New OleDbCommand

    Dim Con = New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=./AcademyDatabase.accdb;Persist Security Info=False;")

    SQL = "INSERT INTO Student (FullName,JoinDate,DOB,ParentsName,School,STD,Address,EMail,Mobile1,Mobile2,DurationStart,DurationEND,Fees,MaterialFees,LateFees,NextRenewal,Centre,Coach,Image,DropOut) VALUES ('" _
        & Name & "','" _
        & JoinDate & "','" _
        & DOB & "','" _
        & ParentsName & "','" _
        & School & "','" _
        & STD & "','" _
        & Address & "','" _
        & EMail & "','" _
        & Mobile1 & "','" _
        & Mobile2 & "','" _
        & DurationStart & "','" _
        & DurationEND & "','" _
        & Fees & "','" _
        & MaterialFees & "','" _
        & LateFees & "','" _
        & NextRenewal & "','" _
        & Centre & "','" _
        & Coach & "','" _
        & picture & "'," _
        & "0)"
    Cmd = New OleDbCommand(SQL, Con)

    Con.Open()
    objCmd = New OleDbCommand(SQL, Con)
    Dim rowCount As Integer = 0

    Try
        rowCount = objCmd.ExecuteNonQuery()
    Catch ex As Exception
        Console.WriteLine(ex.Message)
    End Try

SQL:

"INSERT INTO Student (FullName,JoinDate,DOB,ParentsName,School,STD,Address,EMail,Mobile1,Mobile2,DurationStart,DurationEND,Fees,MaterialFees,LateFees,NextRenewal,Centre,Coach,Image,DropOut) VALUES ('','3/13/2014','1/1/1900','','fadsasdffdas','','','','','','1/1/1900','1/1/1900','0','0','0','1/1/1900','','','',0)"

IMAGE是保留關鍵字。 如果要將其用作列名,則需要用方括號將其封裝

"INSERT INTO Student " & _ 
"(FullName,JoinDate,DOB,ParentsName,School,STD,Address," & _
"EMail,Mobile1,Mobile2,DurationStart,DurationEND,Fees," & _
"MaterialFees,LateFees,NextRenewal,Centre,Coach,[Image],DropOut) VALUES  ...."

如果您仍然可以這樣做,建議您將該列的名稱更改為NON保留關鍵字,否則在嘗試使用該列時始終會出現此問題。

話雖如此,請閱讀有關參數化查詢的信息。 您的代碼有一個大問題,它被稱為SQL Injection (更不用說字符串,日期和小數的解析問題了)

 SQL = "INSERT INTO Student " & _ 
       "(FullName,JoinDate,DOB,ParentsName,School,STD,Address," & _
       "EMail,Mobile1,Mobile2,DurationStart,DurationEND,Fees," & _
       "MaterialFees,LateFees,NextRenewal,Centre,Coach,[Image],DropOut) " & _
       "?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,0)"
 Con.Open()
 objCmd = New OleDbCommand(SQL, Con)
 objCmd.Parameters.AddWithValue("@p1", Name)
 objCmd.Parameters.AddWithValue("@p2", JoinDate)
 .... add the other missing parameters with their values.....
 objCmd.Parameters.AddWithValue("@p18", picture)

 Dim rowCount As Integer = 0
 rowCount = objCmd.ExecuteNonQuery()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM