使用visual basic INSERT INTO和UPDATE SQL进入访问数据库

时间:2018-04-16 09:03:21

标签: vb.net ms-access

我正在学习A Level课程,使用VB表格作为前端,使用Access数据库作为后端。我已经尝试了很多不同的方法,但我无法让程序更新或将数据插入数据库。 我知道连接很好,因为我从访问程序中检索数据没有问题。

这是其中一种形式的代码: (数据库连接采用单独的形式)

Template.body.events({

  'change #ordre'(event){
    event.preventDefault();

    chansonsFutures(){

      return Chansons.find({
        "playedStatus":false
      },{
        sort : { document.getElementById("ordre").value:-1 }
      });
    },
  },
});

错误消息显示INSERT INTO语句中存在语法错误。 我真的很傻吗?

4 个答案:

答案 0 :(得分:0)

您缺少关闭“'”for instrument'“& instrument&”',“。而且,只需确认没有单引号(等级)的字段的值是数字,否则添加单引号

答案 1 :(得分:0)

你的单括号和双括号有点混乱。仅此一项是使用参数的一个很好的理由,但它也可以保护您免受用户的恶意输入。 Access的重要之处在于您必须按照命令使用它们的顺序添加参数。

        Dim cn As New OleDbConnection("Your Access connection string")
        Dim s As String = "INSERT INTO Grade (Username, Instrument, Exam Board, Grade, Result) VALUES (@User, @Instrument, @Board, @Grade, @Result);"
        Dim cmd As New OleDbCommand(s, cn)
        cmd.Parameters.AddWithValue("@User", TxtStudent.Text)
        cmd.Parameters.AddWithValue("@Instrument", CmbInstrument.Text)
        cmd.Parameters.AddWithValue("@Board", cmdBoard.Text)
        cmd.Parameters.AddWithValue("@Grade", CmdGrade.Text)
        cmd.Parameters.AddWithValue("@Result", CmdResult.Text)
        cn.Open()
        cmd.ExecuteNonQuery()
        cn.Close()

仔细检查字段的数据类型,如果不是所有字符串,则调整代码。

答案 2 :(得分:0)

在SQL查询和语句中,'(单引号)用于将字符串类型的值传递给任何给定参数(或任何内容)。您错误的是您忘记添加'所有的地方。

   "INSERT INTO Grade (Username, Instrument, Exam Board, Grade, Result) VALUES ('" & user & "', '" & board & "', '" & instrument & ", "'" & grade & "'", "'" & result & "'")"

这将解决它:)

但是,有一条建议,不要在语句本身中给出直接值,欢迎使用SQL-Injection.Rather,稍后为它们创建参数和值:

 Dim cmd as New SqlCommand("INSERT INTO Grade (Username)Values(@uname)",con)
 cmd.Parameter.Add("@uname",SqlDbType.Vachar) = "abc"

希望这有助于丰富您的知识:)

答案 3 :(得分:0)

你必须试试这个!

    Dim con As New OleDbConnection("Your Access connection string here")
    Dim s As String = "INSERT INTO Grade ([Username], [Instrument], [Exam Board], [Grade], [Result]) VALUES (@User, @Instrument, @Board, @Grade, @Result)"
    Dim cmd As New OleDbCommand(s, con)
    con.Open()
    cmd.Parameters.AddWithValue("@User", TxtStudent.Text)
    cmd.Parameters.AddWithValue("@Instrument", CmbInstrument.Text)
    cmd.Parameters.AddWithValue("@Board", cmdBoard.Text)
    cmd.Parameters.AddWithValue("@Grade", CmdGrade.Text)
    cmd.Parameters.AddWithValue("@Result", CmdResult.Text)
    cmd.ExecuteNonQuery()
    con.Close()

我希望它会奏效! :)