【问题标题】:how to store data from vb.net to access a database如何存储来自 vb.net 的数据以访问数据库
【发布时间】:2010-11-28 04:23:26
【问题描述】:

我正在使用 Access 数据库和 vb.net 2010。我在数据库中创建了一个表,其中包含 title、datein、dateout 和 roomnymber 列。在 vb.net 2010 中,我做了一个杰出的标题 = 组合框、日期输入和日期输出 = DateTimePicker。当我点击 F5 时,出现错误:INSERT INTO Syntax Error in statement。这是我的代码:

Dim sql As String
  sql = "INSERT INTO tcekin(title,firstname,lastname,address,country,company,roomnumber,datein,dateout,rommtype,note)" & "VALUES('" & ComboBox1.Text & _
  "','" & txtFirstName.Text & "','" & txtLastName.Text & "','" & txtAddress.Text & "','" & cboCountry.Text & "','" & txtCompany.Text & "','" & txtNumber.Text & _
  "','" & dptDateIn.Text & "','" & dptDateOut.Text & "','" & cboRoom.Text & "','" & txtNotes.Text & "')"
  cmmd = New OleDbCommand(sql, cnn)

【问题讨论】:

  • 请仅提供英文版。我稍后会提供谷歌翻译,甚至可能会手动编辑内容,但您可能会通过编辑问题以用您自己的话用英语提问来做得更好。
  • owgh..对不起,因为我的英语坏了^^

标签: vb.net ms-access


【解决方案1】:

这里的第一个问题是永远不要永远不要使用字符串连接来构建这样的查询。改为这样做:

Dim sql As String = _
    "INSERT INTO tcekin " &_
    "(title,firstname,lastname,address,country,company,roomnumber,datein,dateout,rommtype,note)" &_
    "VALUES(?,?,?,?,?,?,?,?,?,?,?)"
cmmd = New OleDbCommand(sql, cnn)
cmmd.Parameters.AddWithValue("Title", Combobox1.Text)
cmmd.Parameters.AddWithValue("FirstName", txtFirstName.Text)
''# ...
''# ...

这也将更容易发现和避免像您抱怨的语法错误。

【讨论】:

  • 所以我必须一个一个地添加 cmmd.Parameters.AddWithValue("FirstName", txtFirstName.Text) ?从 txtFirstName 到 note ?
  • 是的。始终使用参数化查询。您使用的字符串连接方法导致您的查询容易受到 sql 注入黑客攻击。
猜你喜欢
  • 1970-01-01
  • 2023-03-18
  • 2012-08-09
  • 1970-01-01
  • 2021-11-28
  • 1970-01-01
  • 1970-01-01
  • 2020-12-03
  • 1970-01-01
相关资源
最近更新 更多