读书人

c# 剔除DataTable中的某一行但是无法

发布时间: 2013-03-13 10:56:58 作者: rapoo

c# 删除DataTable中的某一行,但是无法在数据库中更新

 public void DataBaseDelete(string FieldName, string FieldValue, string DataTableName)
{
if (this.OleDbCommandString != null && this.ConnectionString != null)
{
MyConnection = new OleDbConnection(_ConnectionString);
MyDataAdapter = new OleDbDataAdapter(_OleDbCommandString, MyConnection);

MyDataSet = new DataSet();
MyDataAdapter.Fill(MyDataSet, DataTableName);

MyDataTable = MyDataSet.Tables[DataTableName];
DataRow[] Dr = MyDataTable.Select(FieldName + "=" + FieldValue);
if (Dr.Length > 0)
{
foreach (DataRow Dr1 in Dr)
{
MyDataTable.Rows.Remove(Dr1);
}
}
try
{

MyDataAdapter.Update(MyDataSet, DataTableName);
}
catch (Exception Err)
{
MessageBox.Show(Err.Message, "异常", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}

}
else
{
MessageBox.Show("您没有设置OleDbCommandString和ConnectionString属性", "警告", MessageBoxButtons.OK, MessageBoxIcon.Warning);


}
}



我设置断点调试,DataTable中的删除了,但是往数据库更新不了啊,是不是缺少什么啊 c# 数据库 DataTable
[解决办法]
不能用Remove,那个不是删除,是直接移除,删除必须调用DataRow的Delete方法
[解决办法]
MyDataTable.Rows.Remove 是移除MyDataTable表的数据而对数据库没影响;要想对数据库操作就要执行对应的SQL语句
[解决办法]
可以自动生成SQL语句,不过我一般不会这么做,因为你编写代码的时候看不到生成的语句,万一语句有问题,你根本无从知晓。可以直接在查询管理器里面,鼠标右键点击表名,让它帮你创建插入、更新、删除语句,之后微调,复制到C#里面赋值给Command。如果那个语句含有不少不规范的字符,没关系,写个正则批量替换下即可,我就写过一个正则,需要的话,表达式可以给你。
[解决办法]
DataTable是缓存在内存里面的,你删除他当然没有删除数据库里面的东西了
在应该是删除DataTable的方法里面用ado.net删除数据库里面的数据之后,重新绑定数据

读书人网 >C#

热点推荐