guaishi 发表于 2008-5-16 10:31

asp.net中VB的语法有错

Dim sd As New Data.OleDb.OleDbCommand("insert into user(user,pwd)values ('+use_txt.Text+','+pwd_txt.Text+')", dd)
总报sql语句有错,请问一下如何改呀

hebingbing 发表于 2008-5-16 10:42

'+use_txt.Text+','+pwd_txt.Text+'这里有错误,+use_txt.Text+不是字符串……
要是c#的话应该改成
'“+use_txt.Text+”','“+pwd_txt.Text+”'
vb是不是这样改不太确定,好像是&什么的,没有学过vb不是太清楚,lz可以到网上查查……

guaishi 发表于 2008-5-16 10:53

我加了'"&&"'也不对

kevintang 发表于 2008-5-16 11:02

Dim sd As New Data.OleDb.OleDbCommand("insert into user(user,pwd) values ('+use_txt.Text+','+pwd_txt.Text+')",
values 前面加个空格

guaishi 发表于 2008-5-16 11:48

还是一样报错
Partial Class _Default
    Inherits System.Web.UI.Page

    Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim dd As New Data.OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("App_Data\md.mdb"))
        Dim sd As New Data.OleDb.OleDbCommand("insert into user(user,pwd)  values (' + use_txt.Text+  ','+ pwd_txt.Text + ')", dd)
        Try
            dd.Open()
        Catch ex As Exception
            Response.Write(ex.Message)
        End Try
        Try
            sd.ExecuteNonQuery()
        Catch ex As Exception
            Response.Write(ex.Message)
        End Try

        Response.Write("<script language='jvavscript'>alert('操作成功');</script>")
    End Sub
End Class

hebingbing 发表于 2008-5-16 12:31

[quote][bo]以下是引用 [un]hebingbing[/un] 在 2008-5-16 10:42 AM 的发言:[/bo]

'+use_txt.Text+','+pwd_txt.Text+'这里有错误,+use_txt.Text+不是字符串……
要是c#的话应该改成
'“+use_txt.Text+”','“+pwd_txt.Text+”'
vb是不是这样改不太确定,好像是&什么的,没有学过vb不是太清楚,lz可以到网上 ... [/quote]
还是这句话……
呵呵……

guaishi 发表于 2008-5-16 13:47

是呀,我问的都有点不好意思了,真不明白为什么try得到的错误就是SQL语法错误

guaishi 发表于 2008-5-16 14:30

输入那句话还是可以正常,就是运行时报错
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
        Response.Write(use_txt.Text)
        Response.Write("<br>")
        Response.Write(pwd_txt.Text)
        Response.Write("<br>")
        Dim dd As New Data.OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("App_Data\md.mdb"))
        Dim sql As String = "insert into user(user,pwd)  values ( '" + use_txt.Text + "' ,'" + pwd_txt.Text + " ')"
        Response.Write(sql)
        Response.Write("<br>")
        dd.Open()
        Dim sd As New Data.OleDb.OleDbCommand(sql, dd)


        Try
            sd.ExecuteNonQuery()
        Catch ex As Exception
            Response.Write(ex.ToString)
        End Try




        Response.Write("<script language='jvavscript'>alert('操作成功');</script>")
    End Sub
End Class


运行结果:
asdsa
sadsa
insert into user(user,pwd) values ( 'asdsa' ,'sadsa ')
System.Data.OleDb.OleDbException: INSERT INTO 语句的语法错误。 在 System.Data.OleDb.OleDbCommand.ExecuteCommandTextErrorHandling(OleDbHResult hr) 在 System.Data.OleDb.OleDbCommand.ExecuteCommandTextForSingleResult(tagDBPARAMS dbParams, Object& executeResult) 在 System.Data.OleDb.OleDbCommand.ExecuteCommandText(Object& executeResult) 在 System.Data.OleDb.OleDbCommand.ExecuteCommand(CommandBehavior behavior, Object& executeResult) 在 System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior behavior, String method) 在 System.Data.OleDb.OleDbCommand.ExecuteNonQuery() 在 _Default.Button1_Click(Object sender, EventArgs e) 位置 F:\asp.net\Default.aspx.vb:行号 19

hebingbing 发表于 2008-5-16 17:13

改成这样的试试……
insert into [user]([user],pwd)

guaishi 发表于 2008-5-17 09:24

把它移到别的盘就可以正常运行了,怪怪的

guaishi 发表于 2008-5-17 09:30

这个是可以正常运行,放到那个分区也不可以运行了,这种事如何解释。
Partial Class show
    Inherits System.Web.UI.Page

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
      
        'Response.Write(i)
    End Sub

    Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim conn = New Data.OleDb.OleDbConnection("Provider=Microsoft.Jet.OleDb.4.0;Data Source=" & Server.MapPath("mdb.mdb"))
        Dim sql As String = "select * from dcontd"
        Dim comm = New Data.OleDb.OleDbCommand(sql, conn)
        conn.open()
        Dim ds As Data.OleDb.OleDbDataReader
        ds = comm.ExecuteReader()

        While (ds.Read())
            Response.Write(Convert.ToSingle(ds("id")))
            Response.Write("<br>")
            Response.Write(Convert.ToString(ds("dotype")))
            Response.Write("<br>")
            Response.Write(Convert.ToString(ds("dtext")))
            Response.Write("<br>" & "新记录:")
            Response.Write(Convert.ToString(ds("daddress")))
            Response.Write("<br>")
        End While
        ds.Close()
        conn.close()

        Dim sqll As String = "insert into dcontd(daddress,dtext)values('" + user.Text + "','" + pwd.Text + "')"
        Dim con = New Data.OleDb.OleDbConnection("Provider=Microsoft.Jet.OleDb.4.0;Data Source=" & Server.MapPath("mdb.mdb"))
        con.open()
        Dim cc = New Data.OleDb.OleDbCommand(sqll, con)
        cc.executenonquery()



    End Sub
End Class

hebingbing 发表于 2008-5-17 11:20

因为user是sql的保留字,你加上[]就可以了……

页: [1]

编程论坛