【问题标题】:Syntax Error on INSERT into User Table in MS Access 2003在 MS Access 2003 中插入​​用户表时出现语法错误
【发布时间】:2012-04-08 19:25:42
【问题描述】:

使用带有 ASP.NET 和 ms-access 2003 数据的 VB.NET,我正在尝试将数据从 Web 表单输入到 db.mdb 中名为“USER”的表中。

我试过这段代码:

 Protected Sub btnCreateAccount_Click(sender As Object, e As System.EventArgs) Handles btnCreateAccount.Click

    Dim conn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\Brian\Documents\Visual Studio 2010\WebSites\WebSite3\db.mdb;User Id=admin;Password=;")

    Dim cmd As OleDbCommand = New OleDbCommand("INSERT INTO USER (Name, Surname, Username, Country, TelNo, Password, Address) VALUES (?, ?, ?, ?, ?, ?, ?)", conn)

    If txtPass.Text = txtCPass.Text Then

        cmd.Parameters.Add("@Name", OleDbType.VarChar, 255).Value = txtName.Text
        cmd.Parameters.Add("@Surame", OleDbType.VarChar, 255).Value = txtSurname.Text
        cmd.Parameters.Add("@Address", OleDbType.VarChar, 255).Value = txtAddress.Text
        cmd.Parameters.Add("@Country", OleDbType.VarChar, 255).Value = txtCountry.Text
        cmd.Parameters.Add("@Username", OleDbType.VarChar, 255).Value = txtUsername.Text
        cmd.Parameters.Add("@Password", OleDbType.VarChar, 255).Value = txtPass.Text
        cmd.Parameters.Add("@TelNo", OleDbType.Integer).Value = txtTelNo.Text

        Try

            conn.Open()
            cmd.ExecuteNonQuery()
            conn.Close()

        Catch ex As OdbcException
            Throw ex
        Finally
            conn.Close()
            lblAccount.Visible = True


        End Try

    End If

End Sub

但它给我返回了一条错误消息:

对可能导致问题的原因有何建议?

【问题讨论】:

  • 强烈建议您去掉Catch 子句。它会弄乱您的堆栈跟踪,使其看起来像 Throw Ex 行是异常的来源。

标签: asp.net sql vb.net ms-access-2003


【解决方案1】:

UserPassword 是保留关键字。更改名称,或在查询中的名称周围使用方括号:

    Dim cmd As OleDbCommand = New OleDbCommand("INSERT INTO [USER] (Name, Surname, Username, Country, TelNo, [Password], Address) VALUES (?, ?, ?, ?, ?, ?, ?)", conn)

那么,接下来你会遇到的错误:由于参数没有在查询中命名,Parameters集合中的参数对象必须按照它们在查询中使用的顺序添加。

【讨论】:

  • 谢谢!.. 还有一件事我在cmd.ExecuteNonQuery() 上的{"Data type mismatch in criteria expression."} 上遇到错误可能是什么原因造成的?
  • @Brian:你检查过参数的顺序是否正确吗?您是否检查过参数类型是否与数据库类型相对应?您是否验证过电话号码仅包含数字,以便可以转换为整数?
猜你喜欢
  • 2013-09-30
  • 2018-05-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多