ds=new DataSet();
dt=new OleDbDataAdapter();
conn=new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + 
@"yang.mdb;");
cmd=conn.CreateCommand();
cmd.CommandText ="select * from Pdatum";
dt.SelectCommand =cmd;
conn.Open();
dt.Fill(ds,"Pdatum");
conn.Close();cmd.CommandText ="delete from Pdatum where Pdatumname='1'";
dt.DeleteCommand =cmd;
conn.Open();
dt.Update(ds,"Pdatum");
conn.Close();
delete from Pdatum where Pdatumname='1'这句为什么不能删除记录呢?

解决方案 »

  1.   

    ACCESS的删除语句为 delete * form
    而不是delete form
    delete * from Pdatum where Pdatumname='1'这句为什么不能删除记录呢?
      

  2.   

    delete Pdatum where Pdatumname = '1'
      

  3.   

    delete from Pdatum where Pdatumname='1'
    语句本身没问题.关第是删除不好使.
      

  4.   

    那你Pdatumname是什么类型的.
    int 的话就是
    delete from Pdatum where Pdatumname=1
      

  5.   

    為什麼要那樣刪除呢
    cmd.ExecuteNonQuery()嘛
      

  6.   

    什么叫代码有没错,满足需求才就没错,是不是要改进就不管了,呵
    要调试sql语句,数据库里跑一次不就知道了
      

  7.   

    cmd.CommandText ="delete from Pdatum where Pdatumname='1'";
    dt.DeleteCommand =cmd;
    conn.Open();
    dt.Update(ds,"Pdatum");   //这个跟前面的dt.DeleteCommand =cmd;一点关系也没有,所以没有任何意义
    conn.Close();
    -------------------
    dt.Update(ds,"Pdatum");
    本质上是根据ds的内容来改变数据表,
    所以如果要删除,你的ds中要删除记录,再配以正确的cmd语句(或者自动生成的)
      

  8.   

    就你本身这段代码,只要ds中随便删除了一个记录,应该就可以执行
    因为至少需要一个RowState为删除的行才能触发执行
      

  9.   

    看我的
    代码
    DialogResult r=MessageBox.Show("是否删除当前记录","删除当前记录!",MessageBoxButtons.YesNo ,MessageBoxIcon.Question ); int ss=(int)r; if (ss==6)
    {
    try
    {
    string str1 = @"Provider = Microsoft.Jet.OLEDB.4.0;Data Source=O:\c#\代码\访问数据库\shujuku\1.mdb"; //"@"符号是防止将后面字符串中的"\"解析为转义字符.
    OleDbConnection myConn=new OleDbConnection(str1);//@"Provider=Microsoft.Jet.OLEDB.4.0;Data source=O:\c#\代码\访问数据库\shujuku\1.mdb");
    myConn.Open (); string str2="delete from person where name = '3'";
    OleDbCommand myCommand = new OleDbCommand(str2 , myConn ) ;
    myCommand.ExecuteNonQuery();

    myConn.Close ();
    }
    catch ( Exception  ep) 
    {
    MessageBox.Show ( "连接错误! " + ep.ToString ( ) , "错误" ) ;
    }
    }
    呵呵
      

  10.   

    TO:charles_y(难得糊涂)用OleDbCommandBuilder是自动生成删除语句.
    如何自己写呢?
      

  11.   

    这段代码你参考一下,这里用的是SqlAdapter和插入语句,但方法是一样的void bool InsertData(DataSet ds)
    {
                   String sqlStr;
    sqlStr="insert into myTable(CategoryName) values (@CategoryName));select @PkID=@@identity";
    theInsertCommand  = new SqlCommand(sqlStr,new SqlConnection("数据库联接串"));
    SqlParameterCollection sqlParams = theInsertCommand.Parameters;
    sqlParams.Add(new SqlParameter( "@PkID",SqlDbType.Int));
    sqlParams["@PkID"].SourceColumn="PkID";
    sqlParams["@PkID"].Direction=ParameterDirection.Output;
    sqlParams["@CategoryName"].SourceColumn="CategoryName";
    SqlDataAdapter dsCommand;
    dsCommand = new SqlDataAdapter();
    dsCommand.SelectCommand = new SqlCommand();
    dsCommand.SelectCommand.Connection  = new SqlConnection("数据库联接串");

    dsCommand.InsertCommand=theInsertCommand;
    dsCommand.Update(data,"MyTable"); //注意这个MyTable
    if ( data.HasErrors )
    {
    data.Tables[GoodsCategoryData.TABLE_NAME].GetErrors()[0].ClearErrors();
    return false;
    }
    else
    {
    data.AcceptChanges();
    return true;
    }}
      

  12.   

    你没有删除mdb数据的权限。mdb文件 - 鼠标右键 - 属性 - 安全 - 添加用户:机器名\ASPNET - 给它读写的权限
      

  13.   

    有小错误,void bool InsertData(DataSet data)
    {
                   String sqlStr;
    sqlStr="insert into myTable(CategoryName) values (@CategoryName));select @PkID=@@identity";
    theInsertCommand  = new SqlCommand(sqlStr,new SqlConnection("数据库联接串"));
    SqlParameterCollection sqlParams = theInsertCommand.Parameters;
    sqlParams.Add(new SqlParameter( "@PkID",SqlDbType.Int));
    sqlParams["@PkID"].SourceColumn="PkID";
    sqlParams["@PkID"].Direction=ParameterDirection.Output;
    sqlParams["@CategoryName"].SourceColumn="CategoryName";
    SqlDataAdapter dsCommand;
    dsCommand = new SqlDataAdapter();
    dsCommand.SelectCommand = new SqlCommand();
    dsCommand.SelectCommand.Connection  = new SqlConnection("数据库联接串");

    dsCommand.InsertCommand=theInsertCommand;
    dsCommand.Update(data,"MyTable"); //注意这个MyTable
    if ( data.HasErrors )
    {
    data.Tables[GoodsCategoryData.TABLE_NAME].GetErrors()[0].ClearErrors();
    return false;
    }
    else
    {
    data.AcceptChanges();
    return true;
    }}
      

  14.   

    TO:charles_y(难得糊涂)有一些思路了.谢谢.
    不过,好麻烦呀.还是用OleDbCommandBuilder方便呀.