C#从两个不同数据库进行简单减法

C#从两个不同数据库进行简单减法,c#,postgresql,sqlite,math,C#,Postgresql,Sqlite,Math,我有两个不同的数据库——SQLite和PostgreSQL,我试图从这些数据库中对表进行微小的计算。 两个表都包含nr_serii和ilosc列,SQLite: 和博士后: 我建立了与数据库和数据集的连接。也许我应该使用不同的地方来存储数据 我需要减去ilosc列:(sqlite postgres),但不知道如何做。 例如,对于每个nr_系列,生成减法列ilosc: 序号:222222 ilosc:15-7=8 最后,我想向datagridview显示输出数据。 当我使用messagebox

我有两个不同的数据库——SQLite和PostgreSQL,我试图从这些数据库中对表进行微小的计算。 两个表都包含nr_serii和ilosc列,SQLite:

和博士后:

我建立了与数据库和数据集的连接。也许我应该使用不同的地方来存储数据

我需要减去ilosc列:(sqlite postgres),但不知道如何做。 例如,对于每个nr_系列,生成减法列ilosc:

序号:222222

ilosc:15-7=8

最后,我想向datagridview显示输出数据。 当我使用messagebox时,我可以看到数据集中的数据。以下是我的部分代码:

            string cs = @"URI = file:" + Sdatabase;
            string csP = conParam;
            string sqlP = "select nr_serii, ilosc from stany";
            string sql = "select nr_serii, ilosc from przychod";
            
            using var con = new SQLiteConnection(cs);
            con.Open();
            using var cmd = new SQLiteCommand(sql, con);
            SQLiteDataAdapter da = new SQLiteDataAdapter(cmd);
            DataSet ds = new DataSet();
            da.Fill(ds);

            using var conP = new NpgsqlConnection(csP);
            conP.Open();
            NpgsqlCommand cmdP = new NpgsqlCommand(sqlP, conP);
            NpgsqlDataAdapter DA = new NpgsqlDataAdapter(cmdP);
            DataSet dsP = new DataSet();
            DA.Fill(dsP);
            //----------test-----------
            foreach (DataRow row in dsP.Tables[0].Rows)
            {
                var nr_serii = row["nr_serii"];
                var ilosc = row["ilosc"];
                MessageBox.Show(nr_serii +","+ ilosc);
            }
            
            //--------------------------

例如,您可以浏览第一个数据源ds中的数据表,并通过第二个数据源dsP中数据表中每一行的nr_serii列的值搜索匹配的行,如果找到,则向新的第三个结果表中添加一个具有计算结果的新行

然后,根据nr_serii列的值,不要忘记解决如何处理仅在第一个ds中或仅在第二个dsP数据源中的记录的问题

程序代码示例:

//prepare result third DataTable
DataTable resultDt = new DataTable();
resultDt.Columns.Add("nr_serii");
resultDt.Columns.Add("ilosc");
//add content to result DataTable
foreach (DataRow row in ds.Tables[0].Rows)
{
    var nr_serii = row["nr_serii"];
    var ilosc = row["ilosc"];
    DataRow drP = null;
    foreach (DataRow dataRow in dsP.Tables[0].Rows)
    {
        if (nr_serii.ToString() == (string)dataRow["nr_serii"])
        {
            drP = dataRow;
            break;
        }
    }
    if (drP != null)
    {
        var dr = resultDt.NewRow();
        dr["nr_serii"] = nr_serii;
        dr["ilosc"] = (int)ilosc - (int)drP["ilosc"];
        resultDt.Rows.Add(dr);
    }
}

例如,您可以浏览第一个数据源ds中的数据表,并通过第二个数据源dsP中数据表中每一行的nr_serii列的值搜索匹配的行,如果找到,则向新的第三个结果表中添加一个具有计算结果的新行

然后,根据nr_serii列的值,不要忘记解决如何处理仅在第一个ds中或仅在第二个dsP数据源中的记录的问题

程序代码示例:

//prepare result third DataTable
DataTable resultDt = new DataTable();
resultDt.Columns.Add("nr_serii");
resultDt.Columns.Add("ilosc");
//add content to result DataTable
foreach (DataRow row in ds.Tables[0].Rows)
{
    var nr_serii = row["nr_serii"];
    var ilosc = row["ilosc"];
    DataRow drP = null;
    foreach (DataRow dataRow in dsP.Tables[0].Rows)
    {
        if (nr_serii.ToString() == (string)dataRow["nr_serii"])
        {
            drP = dataRow;
            break;
        }
    }
    if (drP != null)
    {
        var dr = resultDt.NewRow();
        dr["nr_serii"] = nr_serii;
        dr["ilosc"] = (int)ilosc - (int)drP["ilosc"];
        resultDt.Rows.Add(dr);
    }
}