【问题标题】:VB.NET / SQL for deleting database rows in a MS Access databaseVB.NET / SQL 用于删除 MS Access 数据库中的数据库行
【发布时间】:2017-02-07 09:57:00
【问题描述】:

我想删除 MS Access 表的所有内容,但是我不确定如何设置我的 SQL 来执行此操作。

到目前为止,我在网上找到了这个:

Dim SqlQuery As String = "DELETE * FROM QuestionResults WHERE Quizname = " & txtQuizName.Text & ";"

由于我之前的代码,我已连接到数据库,我只是不确定如何编辑此代码以删除表的内容(我希望它删除每条记录,而不是表本身)

Public provider As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source="
Public dataFile As String = "U:\My Documents\Visual Studio 2013\Projects\COMP4 Project\COMP4 Project\bin\Debug\QuizDatabase.accdb"

Public connString As String
Public myConnection As OleDbConnection = New OleDbConnection
Public dr As OleDbDataReader

connString = provider & dataFile
myConnection.ConnectionString = connString
myConnection.Open()

【问题讨论】:

  • 您不需要*。还要使用参数,否则您可能会对 SQL 注入持开放态度。
  • 那些 DBObject 不应该是全局对象;它们都应该在尽可能小的范围内创建、使用和处置(除了少数例外)

标签: sql database vb.net ms-access


【解决方案1】:

没有WHERE 子句的DELETE FROM QuestionResults 将删除每一行。

替代命令TRUNCATE TABLE QuestionResults会更快,但是我不知道Access/JET是否支持TRUNCATE语句。

请注意,您不能使用字符串连接生成 SQL。如果有人将"Baba O'Reilly" 放入您的txtQuizName 文本框,您的程序将会中断。而是使用参数。

【讨论】:

    【解决方案2】:

    戴说的。你也不需要OleDbDataReader使用OleDbCommand

    表示要针对数据源执行的 SQL 语句或存储过程。

    使用示例:

    Dim command As New OleDbCommand(queryString, connection)
    command.ExecuteNonQuery()
    

    【讨论】:

      猜你喜欢
      • 2015-11-16
      • 1970-01-01
      • 2013-12-14
      • 1970-01-01
      • 2011-05-13
      • 1970-01-01
      • 2023-04-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多