问题描述
try{OleDbConnectionmyConn=newOleDbConnection();//生成OleDbConnection对象MyConnmyConn.ConnectionString="Provider=Microsoft.Jet.OLEDB.4.0;datasource=无纸化考试系统.mdb";//ConnectionString是对象MyConn的关键属性,主要有属性Provider和datasource。myConn.Open();OleDbCommandmyCmd=newOleDbCommand("select*from密码表",myConn);//生成myCmd后,可对数据库进行插入、更新、删除操作。OleDbDataAdaptermyAdapter=newOleDbDataAdapter();myAdapter.SelectCommand=myCmd;OleDbCommandBuildercustCB=newOleDbCommandBuilder(myAdapter);DataSetmyDataset=newDataSet();myAdapter.Fill(myDataset);DataTablemyDataTable=myDataset.Tables[0];myDataTable.Rows[1].Delete();MessageBox.Show(myDataTable.Rows.Count.ToString());MessageBox.Show(myDataTable.Rows[1].RowState.ToString());MessageBox.Show(myDataTable.Rows[0].RowState.ToString());myDataTable.Rows.Remove(myDataTable.Rows[1]);//myAdapter.Update(myDataset,myDataset.Tables[0].ToString());myDataTable.AcceptChanges();//问题:记录为什么不能真正删除?MessageBox.Show(myDataTable.Rows.Count.ToString());inti=myAdapter.Update(myDataTable);MessageBox.Show(i.ToString());myConn.Close();}catch(Exceptione1){MessageBox.Show(e1.Message);}为啥删不掉啊
解决方案
解决方案二:
需要先更新再myDataTable.AcceptChanges();myDataTable.Rows.Remove(myDataTable.Rows[1]);MessageBox.Show(myDataTable.Rows.Count.ToString());inti=myAdapter.Update(myDataTable);MessageBox.Show(i.ToString());然后确定你的ACCESS表中有主键
解决方案三:
只用Update()就可以了,最好显式指定当前表的主键
解决方案四:
为啥这样?怎样显示指定当前表的主键?
解决方案五:
还有一点,有没有删除权限。。
解决方案六:
指定表的主键方法:MSDN上有,搜一下就找到了,其实就是定义一个Column数组,然后为其赋值,最后赋给表的一个属性