string strConn = @"Provider = Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\data.mdb";
OleDbConnection conn = new OleDbConnection(strConn);
conn.Open();int ID = Int32.Parse(this.dataGridView1.CurrentRow.Cells[0].Value.ToString());
string selectStr = "delete  from shop where id = " + ID + "";
OleDbCommand thisComm = conn.CreateCommand();
thisComm.CommandText = selectStr;
try
{
    thisComm.ExecuteNonQuery();
}
catch
{
   throw;
}
finally
{
    thisComm.Dispose();
    conn.Close();
}this.dataGridView1.Rows.Remove(this.dataGridView1.CurrentRow);在dataGridView上面实现数据已经没有了,但是打开数据库看下,那条数据还在

解决方案 »

  1.   

    ID是不是取的不对而使
    delete  from shop where id = " + ID + "";
    没有正确的执行!
      

  2.   

    调试下,检查int ID = Int32.Parse(this.dataGridView1.CurrentRow.Cells[0].Value.ToString());这句是不是对的。
      

  3.   

    没有,ID取对了,也正确执行了,catch不会报错,我用快速监视出来的selectStr 的值直接放到access里面去执行,也是正常的,数据会被删掉但是在程序里面执行后,虽然显示是执行成功了,但是数据库里的数据没有被删除只是XSD里面的东东被删除了
      

  4.   

    另外我很怀疑
    try
    {
        thisComm.ExecuteNonQuery();
    }
    catch
    {
       throw;
    }
    finally
    {
        thisComm.Dispose();
        conn.Close();
    }
    这里的finally是不是会被执行。
      

  5.   

    finally如果有,就一定会执行到,放心吧
      

  6.   

    sorry原来是数据库的记录还在…………
      

  7.   

    数据集会更新,就是数据库没有更新我不是直接对\data.mdb执行delete  操作了吗?还需要怎么同步?
      

  8.   

    平民百姓,那我就很好奇了,这是怎么实现的?catch中间的内容未知,用什么办法实现的强制执行finally?而且是在catch里边的东西执行完后。
      

  9.   

    james_hunter(辉)   我的操作又没有中断,没有出错,怎么会到catch去?
      

  10.   

    To james_hunter(辉)如果有finally块代码 程序无论是否catch到异常都会执行finally内的代码 即便有异常throw了也是同样的 并非throw后 程序就return了
      

  11.   

    "delete  from shop where id = " + ID + "";
    中的ID确实存在么?  感觉只有资料库中ID不存在这个可能了
      

  12.   

    只要是try{}finally{}结构,那么finally一定会执行,即使在try{}里使用return也会执行这个finally如果要执行catch{}里的内容,当然是有异常的时候才会,但同样会执行finally里的内容.
      

  13.   

    数据更新了否?  DataGridView1 是否绑定了DataSet ?
      

  14.   

    跟踪了thisComm.ExecuteNonQuery();影响的行数为:1这样应该是执行了DEL操作吧?为什么数据库的值还在呢
      

  15.   

    我已经发现了问题的所在了,在这个地方:string strConn = @"Provider = Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\data.mdb";如果这里的Data Source我用本地路径,比如data source=D:\Document\data.mdb这样的话,数据库的数据会被删掉。为什么会这样?这样写不行吗? Data Source=|DataDirectory|\data.mdb";
      

  16.   

    2003的系统,FAT32的磁盘格式,设置不了权限
      

  17.   

    ID为0,当然删除不了,加个!IsPostBack估计就行
      

  18.   

    哎,我也遇到这个问题了,程序是一点问题也没有,解决方法是将可执行文件和数据库文件单独拷贝到一个文件夹里面,再执行就好了。原因是:调试执行的时候,VS2005将工程目录下的数据库文件拷贝到bin/debug下了,删除了之后,对bin/debug目录下的数据库文件修改了,而工程目录下的数据库文件并没有被修改,所以,觉得数据库文件没有变化,而下次再运行的时候,VS2005将工程目录下的数据库再次拷贝到bin/debug下,还原了数据库!
    哈哈哈
    风云