gpt4 book ai didi

c# - 比较 2 个不同数据库中的 2 个表

转载 作者:太空宇宙 更新时间:2023-11-03 15:54:26 25 4
gpt4 key购买 nike

我有 2 个 Access 数据库,一个名为 revision,另一个名为 revision2。每个数据库都有一个名为 batch 的表。

我有 DataGridView 显示第一个数据库中的数据。

我需要比较来自不同数据库的 2 个表,以及哪些匹配项在 DataGridView 中显示为绿色。

我使用了那个代码,但它只为第一个匹配项着色,而不是全部,

private void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
OleDbConnection con = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\revision.accdb");
OleDbConnection con2 = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\revision2.accdb");
OleDbCommand cmd = new OleDbCommand("select * From batch", con);
OleDbCommand cmd2 = new OleDbCommand("select * From batches", con2);
con.Open();
con2.Open();
OleDbDataReader dr = cmd.ExecuteReader();
OleDbDataReader dr2 = cmd2.ExecuteReader();
dr.Read();
dr2.Read();
DataTable dt = new DataTable();
dt.Columns.Add("batch_no");
if (dr["batch_no"].ToString() == dr2["batch_no"].ToString())
{
string num = dr["batch_no"].ToString();
foreach (DataGridViewRow myrow in dataGridView1.Rows)
{
if (Convert.ToString(myrow.Cells[0].Value) == num)
{
myrow.DefaultCellStyle.BackColor = Color.Green;
}
else
{

}
}
con.Close();
con2.Close();
}
}

有什么解决方案可以让所有的东西都匹配并涂上颜色吗?或者有什么更好的想法?

最佳答案

您没有遍历 reader(dr),您应该找到与当前网格匹配的值的那个。

无论如何,DataTable 和其他读取器 (dr2) 的用途是什么?

快速修改,尚未测试:

    if (dr["batch_no"].ToString() == dr2["batch_no"].ToString())
{
while (dr.Read())
{
string num = dr.GetString(dr.GetOrdinal("batch_no")); //dr["batch_no"].ToString();
foreach (DataGridViewRow myrow in dataGridView1.Rows)
{
if (Convert.ToString(myrow.Cells[0].Value) == num)
{
myrow.DefaultCellStyle.BackColor = Color.Green;
}
else
{

}
}
}

con.Close();
con2.Close();
}

关于c# - 比较 2 个不同数据库中的 2 个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24228901/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com