三、重点:具体代码如下:
protected void Repeat_Btn_Click(object sender, EventArgs e)
{
OleDbConnection dbconn = XianShiWen.MyClass.getConn("GuShiWen.mdb"); //数据库连接
OleDbDataAdapter da;
ArrayList RepeatID = new ArrayList();//用来保存重复记录的ID。
String delStr;
dbconn.Open();//打开数据库。
da = new OleDbDataAdapter("Select * from [Poems]", dbconn);//根据条件进行查询。
DataSet ds = new DataSet(); //创建DataSet对象
da.Fill(ds); //用OleDbDataAdapter对象da填充、更新刚创建的DataSet对象。
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)//在查询的条件结果中进行更新(修改)。
{
for(int j=i+1;j<ds.Tables[0].Rows.Count;j++)//开始比较
{//当题目、作者、原文都相同时,我们认为是纪录重复了。
if(ds.Tables[0].Rows[i]["TiMu"].ToString() == ds.Tables[0].Rows[j]["TiMu"].ToString() &&
ds.Tables[0].Rows[i]["zuozhe"].ToString() == ds.Tables[0].Rows[j]["zuozhe"].ToString() &&
ds.Tables[0].Rows[i]["yuanwen"].ToString() == ds.Tables[0].Rows[j]["yuanwen"].ToString() )
{
RepeatID.Add(ds.Tables[0].Rows[j]["ID"].ToString());//记住重复记录的ID。
}
}
}
for (int i = 0; i < RepeatID.Count; i++)//输出结果。
{
Response.Write(RepeatID[i]+" ");
if (i % 10 == 0) Response.Write("<BR>");
}
//下面开始删除重复的记录。
for (int i = 0; i < RepeatID.Count; i++)
{
delStr = "select * from [poems] where ( id=" + RepeatID[i]+" )";//已经保存的重复记录的ID。
OleDbDataAdapter myDataAdapter = new OleDbDataAdapter(delStr, dbconn);
OleDbCommandBuilder mybuilder = new OleDbCommandBuilder(myDataAdapter); //建立OleDbCommandBuilder
ds = new DataSet();//建立DataSet()实例
myDataAdapter.Fill(ds, "poems");//poems是数据库里的表。
foreach (DataRow dr in ds.Tables["poems"].Rows) //由于在开始选择了所有的记录,此处用集合方式
{
if (dr["id"].ToString().Equals(RepeatID[i]))
{
dr.Delete();
}
}
myDataAdapter.Update(ds, "poems");//更新表。
}
dbconn.Close();
}