作者:dfpkgih | 来源:互联网 | 2023-05-17 10:24
循环读取dataset表中指定字段,从数据库中查询,如果数据库中已有数据了,就从表中删除该行,代码如下:stringExcelSqlSelect*from+SheetNam
循环读取dataset表中指定字段,从数据库中查询,如果数据库中已有数据了,就从表中删除该行,代码如下:
string ExcelSql = "Select * from " + SheetName + " where 订单号 like '%W028%'";
OleDbCommand ExcelCmd = new OleDbCommand(ExcelSql, NowExcelCon);
//OleDbDataReader MyRead = ExcelCmd.ExecuteReader();
OleDbDataAdapter MyA = new OleDbDataAdapter(ExcelCmd);
ExcelDs = new DataSet();
MyA.Fill(ExcelDs, SheetName);
//判断表格中的数据在数据库是否存在了
WangDianPeijCon.Close();
WangDianPeijCon.Open();
for (int i = 0; i < ExcelDs.Tables[0].Rows.Count; i++)
{
SqlCommand NfindCodeCmd = new SqlCommand("Select Wmailcode from WangDianPeij where Wmailcode = '" + ExcelDs.Tables[0].Rows[i]["运单号"].ToString().Trim() + "'",WangDianPeijCon);
SqlDataReader NDr = NfindCodeCmd.ExecuteReader();
if (NDr.HasRows)
{
ExcelDs.Tables[0].Rows[i].Delete();
ExcelDs.Tables[0].AcceptChanges();
}
NDr.Close();
}
dataGridView1.Columns[0].DataPropertyName = "订单号";
dataGridView1.Columns[1].DataPropertyName = "";
dataGridView1.Columns[2].DataPropertyName = "运单号";
dataGridView1.Columns[3].DataPropertyName = "寄件时间";
dataGridView1.Columns[4].DataPropertyName = "收件状态";
dataGridView1.Columns[5].DataPropertyName = "收方地址";
dataGridView1.Columns[6].DataPropertyName = "收方联系人";
dataGridView1.Columns[7].DataPropertyName = "收方手机号码";
dataGridView1.DataSource = ExcelDs.Tables[0];
结果是最后显示出来的数据,没有数据被删除掉,其实ExceDs.table[0]中只有一个记录是数据库中没有的!
6 个解决方案
循环的同时进行删除, 请用倒序操作, 从最后一条开始