注册 登录
编程论坛 ASP.NET技术论坛

asp.net中VB的语法有错

guaishi 发布于 2008-05-16 10:31, 1399 次点击
Dim sd As New Data.OleDb.OleDbCommand("insert into user(user,pwd)values ('+use_txt.Text+','+pwd_txt.Text+')", dd)
总报sql语句有错,请问一下如何改呀
11 回复
#2
hebingbing2008-05-16 10:42
'+use_txt.Text+','+pwd_txt.Text+'这里有错误,+use_txt.Text+不是字符串……
要是c#的话应该改成
'“+use_txt.Text+”','“+pwd_txt.Text+”'
vb是不是这样改不太确定,好像是&什么的,没有学过vb不是太清楚,lz可以到网上查查……
#3
guaishi2008-05-16 10:53
我加了'"&&"'也不对
#4
kevintang2008-05-16 11:02
Dim sd As New Data.OleDb.OleDbCommand("insert into user(user,pwd) values ('+use_txt.Text+','+pwd_txt.Text+')",
values 前面加个空格
#5
guaishi2008-05-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
#6
hebingbing2008-05-16 12:31
[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可以到网上 ...

还是这句话……
呵呵……
#7
guaishi2008-05-16 13:47
是呀,我问的都有点不好意思了,真不明白为什么try得到的错误就是SQL语法错误
#8
guaishi2008-05-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:\\Default.aspx.vb:行号 19
#9
hebingbing2008-05-16 17:13
改成这样的试试……
insert into [user]([user],pwd)
#10
guaishi2008-05-17 09:24
把它移到别的盘就可以正常运行了,怪怪的
#11
guaishi2008-05-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
#12
hebingbing2008-05-17 11:20
因为user是sql的保留字,你加上[]就可以了……
1