string DatabasePath = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=F:\我的项目\C#\OnlyOne\database\data.mdb";DataSet ds = new DataSet();
OleDbConnection conn = new OleDbConnection(DatabasePath);
//加载邮件邮箱表
OleDbDataAdapter daBox = new OleDbDataAdapter();
daBox.SelectCommand = new OleDbCommand("SELECT * FROM 邮件邮箱",conn);
daBox.DeleteCommand = new OleDbCommand("DELETE FROM 邮件邮箱 WHERE 编号=?",conn);
daBox.DeleteCommand.Parameters.Add("@编号",OleDbType.Integer,int.MaxValue,"编号").SourceVersion = DataRowVersion.Current;
daBox.Fill(ds,"邮件邮箱");
ds.Tables["邮件邮箱"].PrimaryKey = new DataColumn[]{ds.Tables["邮件邮箱"].Columns["编号"]};//删除
DataRow row = ds.Tables["邮件邮箱"].Rows.Find(10);
ds.Tables["邮件邮箱"].Rows.Remove(row);
ds.AcceptChanges();
daBox.Update(ds,"邮件邮箱");
OleDbConnection conn = new OleDbConnection(DatabasePath);
//加载邮件邮箱表
OleDbDataAdapter daBox = new OleDbDataAdapter();
daBox.SelectCommand = new OleDbCommand("SELECT * FROM 邮件邮箱",conn);
daBox.DeleteCommand = new OleDbCommand("DELETE FROM 邮件邮箱 WHERE 编号=?",conn);
daBox.DeleteCommand.Parameters.Add("@编号",OleDbType.Integer,int.MaxValue,"编号").SourceVersion = DataRowVersion.Current;
daBox.Fill(ds,"邮件邮箱");
ds.Tables["邮件邮箱"].PrimaryKey = new DataColumn[]{ds.Tables["邮件邮箱"].Columns["编号"]};//删除
DataRow row = ds.Tables["邮件邮箱"].Rows.Find(10);
ds.Tables["邮件邮箱"].Rows.Remove(row);
ds.AcceptChanges();
daBox.Update(ds,"邮件邮箱");
这句已经确认有编号为10的这个记录
Console.WriteLine(row.RowState.ToString()); //Unchanged
ds.Tables["邮件邮箱"].Rows.Remove(row);
Console.WriteLine(row.RowState.ToString()); //Detached
ds.AcceptChanges();
daBox.Update(ds,"邮件邮箱");
已经有改了,DeleteCommand应该是没有错。string DatabasePath = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=F:\我的项目\C#\OnlyOne\database\data.mdb";DataSet ds = new DataSet();
OleDbConnection conn = new OleDbConnection(DatabasePath);
conn.Open();
OleDbCommand cmd = new OleDbCommand("DELETE FROM 邮件邮箱 WHERE 编号=10",conn);
cmd.ExecuteNonQuery();
conn.Close();
DataRow row = ds.Tables["邮件邮箱"].Rows.Find(14);
row.Delete();
daBox.Update(ds,"邮件邮箱");有两点
ds.AcceptChanges();要去掉,不然在调用update时,不能反应出有进行更改的记录。
panda2fw2(我爱Monkey) 兄。你可以用下边的方法自己试试。daBox.RowUpdated +=new OleDbRowUpdatedEventHandler(OnRowUpdate);
private static void OnRowUpdate(object sender, OleDbRowUpdatedEventArgs e)
{
Console.WriteLine(e.Command.CommandText);
}你会发现,如果是有进行AcceptChanges的话,不会输出任何东东的。不论怎样,谢谢两位。