【问题标题】:ASP.NET VB Insert queryASP.NET VB 插入查询
【发布时间】:2016-03-04 22:52:27
【问题描述】:

我有一个访问数据库,我正在尝试向其中插入记录。这似乎很简单,而且在大多数情况下,我所拥有的所有代码都是有意义的。我可以在 VS 15 中创建查询并将它们插入到我的数据库中,但由于某种原因,我插入记录的功能不起作用。有人可以在这里看到我做错了吗?

Private Function SendData(eData As String)
    Dim connectString As String = "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=|DataDirectory|web407db.mdb"

    Dim cn As OleDbConnection = New OleDbConnection(connectString)

    cn.Open()

    Dim selectString As String = "INSERT INTO users(encryptID, firstName, lastName, userName, password, email) VALUES ('" & GetHash(eData) & "', '" & fName_in.Text & "', '" & lName_in.Text & "', '" & uName_in.Text & "', '" & pWord_in.Text & "', '" & email_in.Text & "')"
    Dim cmd As OleDbCommand = New OleDbCommand(selectString, cn)

    cmd.ExecuteNonQuery()
    cn.Close()
    Return True
End Function

该函数在 cmd.ExecuteNonQuery 上给了我一个未处理的异常

这是堆栈跟踪


[OleDbException (0x80040e14): INSERT INTO 语句中的语法错误。] System.Data.OleDb.OleDbCommand.ExecuteCommandTextErrorHandling(OleDbHResult 小时)+1130764
System.Data.OleDb.OleDbCommand.ExecuteCommandTextForSingleResult(tagDBPARAMS dbParams、对象和执行结果)+247
System.Data.OleDb.OleDbCommand.ExecuteCommandText(对象& 执行结果)+208
System.Data.OleDb.OleDbCommand.ExecuteCommand(CommandBehavior 行为,对象和执行结果)+58
System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior 行为,字符串方法)+162
System.Data.OleDb.OleDbCommand.ExecuteNonQuery() +107
WebAppUOP.About.SendData(String eData) in c:\users\debuwa\documents\visual studio 2015\Projects\WebAppUOP\WebAppUOP\AddContact.aspx.vb:41
c:\users\debuwa\documents\visual 中的 WebAppUOP.About.SubmitContact() 工作室 2015\Projects\WebAppUOP\WebAppUOP\AddContact.aspx.vb:26
WebAppUOP.About.Button1_Click(Object sender, EventArgs e) in c:\users\debuwa\documents\visual studio 2015\Projects\WebAppUOP\WebAppUOP\AddContact.aspx.vb:12
System.Web.UI.WebControls.Button.OnClick(EventArgs e) +9669962
System.Web.UI.WebControls.Button.RaisePostBackEvent(字符串 事件参数)+108
System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(字符串 事件参数)+12
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl,字符串 eventArgument) +15
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +35 System.Web.UI.Page.ProcessRequestMain(布尔includeStagesBeforeAsyncPoint,布尔includeStagesAfterAsyncPoint) +3562

`

【问题讨论】:

  • 在此处输入您的异常详细信息。
  • 任何数据库密码以及你得到什么样的异常/错误
  • System.Data.dll 中出现“System.Data.OleDb.OleDbException”类型的异常,但未在用户代码中处理其他信息:INSERT INTO 语句中的语法错误。
  • @DezOnlyOne,请检查您的表名、列名、列数据类型和列映射是否正确。
  • 是的,他们是正确的。当我在 Visual Studio 中运行查询时,它会更新得很好。

标签: asp.net database vb.net ms-access


【解决方案1】:

发现问题。我删除了密码条目。我不完全确定为什么我不能使用密码作为列名,但我删除了它,现在应用程序工作正常。感谢大家的帮助

【讨论】:

    【解决方案2】:

    导入 System.Data.SqlClient

    部分类 _Default 继承 System.Web.UI.Page Dim cn As New SqlConnection("Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Database.mdf;Integrated Security=True;User Instance=True")

    Protected Sub btn_sub_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btn_sub.Click
        Dim str As String
        Dim ans As String
        Try
            str = "insert into login values('" & TextBox1.Text & "', '" & TextBox2.Text & "')"
            cn.Open()
            Dim cmd As New SqlCommand(str, cn)
            ans = cmd.ExecuteNonQuery
            MsgBox("Data Insert ")
            cn.Close()
        Catch ex As Exception
            MsgBox(ex.ToString)
        End Try
    End Sub
    

    结束类

    插入数据

    【讨论】:

    • 正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-26
    • 1970-01-01
    • 1970-01-01
    • 2012-01-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多