语法错误:插入SQL VB.NET

时间:2015-11-14 04:52:31

标签: asp.net vb.net

我是编码,改变职业和自学的初学者+注册自学课程以进入编程。我之前发布了一些类似的问题,但现在我的代码中存在更大问题! 它部分工作,直到我搞砸了:( ..我有一个表单,用户将填充然后存储到Microsoft Access数据库,当它工作时,第一个详细用户输入完全存储到我的表但第二次deatiled它跳过第一个字段(在我的情况下为firstname)并且将firstname存储到Surname(我的第二个字段),基本上每次它都是从一个字段中滑动并从以下字段开始(希望我很清楚!)..现在我改变了我的代码,它一直给我语法错误,我检查了不同的教程和不同的语法(它们都使用不同的语法)但这个错误非常持久!

请帮帮我..下面是mycode

Imports System.Data.OleDb

Public Class FirstCode
    Inherits System.Web.UI.Page
    Dim provider As String
    Dim dataFile As String
    Dim connString As String
    Dim myConnection As OleDbConnection = New OleDbConnection

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

    End Sub

    Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles save.Click
        provider = "Provider= Microsoft.ACE.OLEDB.15.0;Data Source = "
        dataFile = "C:\Users\Data.accdb"
        connString = provider & dataFile
        myConnection.ConnectionString = connString
        myConnection.Open()
        Dim str As String

        str = "INSERT INTO RegisterList (FirstName,Surname,Email,Location,ZipCode,Num,[Password]) + VALUES (@FirstName,@Surname,@Email,@Location,@ZipCode,@Num,@Pass)"

        str = " Insert into RegisterList (FirstName) Values(@FirstName)"
        str = " Insert into RegisterList (Surname) Values(@Surname)"
        str = " Insert into RegisterList (Email) Values(@Email)"
        str = " Insert into RegisterList (Location) Values(@Location)"
        str = " Insert into RegisterList (ZipCode) Values(@ZipCode)"
        str = " Insert into RegisterList (Num) Values(@Num)"
        str = " Insert into RegisterList (Password) Values(@Pass)"

        Dim cmd As OleDbCommand = New OleDbCommand(str, myConnection)
        cmd.Parameters.AddWithValue("@FirstName", TextBox2.Text)
        cmd.Parameters.AddWithValue("@Surname", TextBox3.Text)
        cmd.Parameters.AddWithValue("@Email", TextBox3.Text)
        cmd.Parameters.AddWithValue("@Location", DropDownList1.Text)
        cmd.Parameters.AddWithValue("@CourtName", TextBox4.Text)
        cmd.Parameters.AddWithValue("@Homecare", TextBox5.Text)
        cmd.Parameters.AddWithValue("@Pass", TextBox6.Text)

        cmd.ExecuteNonQuery()
        myConnection.Close()

    End Sub

    Protected Sub Button1_Click1(sender As Object, e As EventArgs) Handles Button1.Click

    End Sub
End Class

2 个答案:

答案 0 :(得分:0)

  1. 这看起来像VB的一些风格,而不是VBScript。 Asp-classic使用VBScript或JavaScript,而不是VB。

  2. 想想这里发生了什么:

    ...
    str = " Insert into RegisterList (FirstName) Values(@FirstName)"  
    str = " Insert into RegisterList (Surname) Values(@Surname)"  
    ...
    

    第二行之后str的价值是多少?所以当你的代码到达

    Dim cmd As OleDbCommand = New OleDbCommand(str, myConnection)
    

    str的价值是多少? (以上肯定是VB,而不是VBScript .VBScript不能dim x As,永远不要New。)

  3. 为什么以下行中有+号? (为了便于阅读,我把它分成了几行。)

    str = "INSERT INTO RegisterList" _
      & " (FirstName,Surname,Email,Location,ZipCode,Num,[Password])" _
      & " + VALUES (@FirstName,@Surname,@Email,@Location,@ZipCode,@Num,@Pass)"
      '   ^ that plus sign - why is it there?
    

答案 1 :(得分:-1)

Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles save.Click
provider = "Provider= Microsoft.ACE.OLEDB.15.0;Data Source = "
dataFile = "C:\Users\Data.accdb"
connString = provider & dataFile
myConnection.ConnectionString = connString
myConnection.Open()
Dim str As String

str = "INSERT INTO RegisterList (FirstName,Surname,Email,Location,ZipCode,Num,[Password]) VALUES(@FirstName,@Surname,@Email,@Location,@ZipCode,@Num,@Pass)"

Dim cmd As OleDbCommand = New OleDbCommand(str, myConnection)
cmd.Parameters.AddWithValue("@FirstName", TextBox2.Text)
cmd.Parameters.AddWithValue("@Surname", TextBox3.Text)
cmd.Parameters.AddWithValue("@Email", TextBox3.Text)
cmd.Parameters.AddWithValue("@Location", DropDownList1.Text)
cmd.Parameters.AddWithValue("@ZipCode", TextBox4.Text)
cmd.Parameters.AddWithValue("@Num", TextBox5.Text)
cmd.Parameters.AddWithValue("@Pass", TextBox6.Text)


cmd.ExecuteNonQuery()
myConnection.Close()




End Sub