簡體   English   中英

C# 兩個不同數據庫的簡單減法

[英]C# simple subtraction from two different database

我有 2 個不同的數據庫 - SQLite 和 PostgreSQL,我試圖從這個數據庫的表上進行微小的數學運算。 兩個表都包含列 nr_serii 和 ilosc,SQLite:

SQLite

和 Postgres:

在此處輸入圖片說明

我建立了與兩個數據庫的連接並填充數據集。 也許我應該使用不同的地方來存儲數據?

我需要減去列 ilosc: (sqlite-postgres),但不知道該怎么做。 例如,對於每個 nr_serii make 減法列 ilosc:

nr_serii:222222

ilosc:15-7=8

最后我想向datagridview顯示輸出數據。 當我使用消息框時,我可以看到數據集中的數據。 這是我的部分代碼:

            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列的值搜索匹配的行,如果找到,則在新的第三個數據源中添加帶有計算結果的新行結果表。

然后你不要忘記解決如何處理僅在第一個ds或僅在第二個dsP數據源中的記錄的問題,具體取決於nr_serii列的值。

程序代碼示例:

//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);
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM