2012-04-29 80 views
0

我想寫一個簡單的代碼行,將刪除某個表中的所有數據行。 (使用c#和MS Access 2010) 該表包含約1000行,10列,並且它有點慢。有沒有辦法使用c#和MS Access刪除表中的所有行?

此代碼的工作:

connStr = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=E:\Words\shinunonDB.accdb;Persist Security Info=False;"; 

    OleDbConnection Conn = new OleDbConnection(); 
    Conn.ConnectionString = connStr; 
    sql = "select * from Heb"; 
    Conn.Open(); 
    OleDbDataAdapter da = new OleDbDataAdapter(sql, Conn); 
    DataSet ds = new DataSet(); 
    OleDbCommandBuilder cb = new OleDbCommandBuilder(da); 

    da.Fill(ds, "Heb"); 
    foreach (DataRow dRow in ds.Tables["heb"].Rows) 
    { 
     dRow.Delete(); 
    } 
    da.Update(ds, "heb"); 

但我想有可能是一個更短和更有效的方式來做到這一點。

謝謝你們。

回答

8

是的,有。只需使用SQL命令:

delete from Heb; 

您可以在OleDbConnection上發出SQL命令。這樣的事情:

OleDbCommand ac = new OleDbCommand("delete from Heb",Conn); 
ac.ExecuteNonQuery(); 
+1

謝謝,它是完美的!但有一個問題 - 沒有Execute命令可用。我應該使用ExecuteNonQuery()嗎?有什麼不同?再次感謝。 – 2012-04-29 13:10:44

+0

@ Bobcat100是的,你應該使用ExecuteNonQuery。不同的是,這種方法存在,而執行是巴勃羅聖克魯斯的不完美記憶的產物。更有幫助的是,我會補充一點,ExecuteNonQuery適用於不從數據庫檢索數據的SQL語句:其整數返回值表示受命令影響的行數。 ExecuteScalar從數據庫返回一個值(例如,使用「USCoins中的select min(Name)」調用ExecuteScalar將返回字符串「dime」)。最後,當然,ExecuteQuery以DbDataReader的形式返回一組行。 – phoog 2012-04-29 14:03:16

+0

ExecuteQuery和DbDataReader是phoog不完美記憶的產物。它們是ExecuteReader和OleDbDataReader。 – 2013-12-12 08:07:10

相關問題