使用vb删除多个访问表中的一行

时间:2016-04-10 05:58:59

标签: vb.net ms-access

我尝试通过让用户选择要删除的行来删除MS访问数据库中的一行,但我不断收到错误ExecuteNonQuery: Connection property has not been initialized.

这是我尝试过的代码:

    Dim Conn As OleDbConnection = New OleDbConnection
    Dim Comm As OleDbCommand
    Dim Comm1 As OleDbCommand

    Dim provider = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source ="
    Dim dataFile = "F:\Database.accdb"
    Comm = New OleDbCommand("DELETE * from Orders WHERE [OrderNumber]=@Orderno")
    Comm1 = New OleDbCommand("DELETE * from Order_Details WHERE [OrderNumber]=@Orderno")
    Conn.ConnectionString = provider & dataFile
    Conn.Open()
    Comm.Parameters.AddWithValue("@Orderno", TextBox1.Text)
    Comm1.Parameters.AddWithValue("@Orderno", TextBox1.Text)
    Comm.ExecuteNonQuery()
    Comm1.ExecuteNonQuery()
    MsgBox("Records Successfully Deleted")
    Conn.Close()

1 个答案:

答案 0 :(得分:0)

您的连接字符串错误。它应该是:

Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\myFolder\myAccessFile.accdb;
Persist Security Info=False;

您还没有设置OleDbCommand对象的Connection属性。

尝试

Dim connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source = F:\Database.accdb; Persist Security Info=False;"

Dim Conn As OleDbConnection = New OleDbConnection (connectionString)
Dim Comm As OleDbCommand
Dim Comm1 As OleDbCommand

Comm = New OleDbCommand("DELETE * from Orders WHERE [OrderNumber]=@Orderno", Conn)
Comm1 = New OleDbCommand("DELETE * from Order_Details WHERE [OrderNumber]=@Orderno", Conn)

Comm.Parameters.AddWithValue("@Orderno", TextBox1.Text)
Comm1.Parameters.AddWithValue("@Orderno", TextBox1.Text)
Conn.Open()
Comm.ExecuteNonQuery()
Comm1.ExecuteNonQuery()
MsgBox("Records Successfully Deleted")
Conn.Close()