簡體   English   中英

c#合並來自兩個不同數據庫提供程序的兩個結果

[英]c# combine two results from two different database providers

我需要檢查是否在一個表(表1)中添加了某些內容,如果需要,則需要從該表中獲取一些值並將其插入第二個表(表2)中。 問題在於,表1是通過OleDbConnection連接的.DBF Provider = VFPOLEDB.1,第二個表2是通過SqlConnection連接的MSSQL表。

我想做這樣的事情:從Table1中選擇SELECT column1不在其中的列1(從Table2中選擇SELECT column2)

是否有可能做到這一點? 我可以通過執行以下操作將兩個表都加載到datagridview中:

public static DataTable GetDataTableDBF(string strFileName)

    {

        OleDbConnection conFOX = new OleDbConnection("Provider=VFPOLEDB.1;Data Source=" + Path.GetFullPath(strFileName).Replace(Path.GetFileName(strFileName), "") + ";Exclusive=No");

        conFOX.Open();

        string strQuery = "SELECT * FROM [" + Path.GetFileName(strFileName) + "]";

        OleDbDataAdapter adapter = new OleDbDataAdapter(strQuery, conFOX);

        DataSet ds = new DataSet();

        adapter.Fill(ds);

        return ds.Tables[0];

    }

對於OleDbConnection並執行以下操作:

public static DataTable GetDataTableSQL(string TableName)

    {

        SqlConnection conSQL = new SqlConnection(connection);
        SqlDataAdapter da = new SqlDataAdapter();
        DataSet ds = new DataSet();

        conSQL.Open();

        string strQuery = "SELECT * FROM " + TableName;
        da.SelectCommand = new SqlCommand(strQuery, conSQL);

        da.Fill(ds);

        return ds.Tables[0];

    }

用於SqlConnection。 也許我可以從該查詢中獲取2個數據集或類似臨時表的內容? 所以會是這樣嗎?

SELECT dataset1.column1 FROM dataset1 WHERE dataset1.column1 NOT IN (SELECT dataset2.column2 FROM dataset2) 

由於這兩個數據表都來自不同的源,因此您需要將這兩個數據表都提取到內存中,然后使用linq來獲取數據集。 像這樣的東西

    var datatable1 = GetDataTableDBF("filename");
    var datatable2 = GetDataTableSQL("tablename");

    var query = from c in dataset1.AsEnumerable()
                where !(from o in dataset2.AsEnumerable()
                        select o.Field<int>("column2")).Contains(c.Field<int>("column1"))
                select c;

    var filteredDataTable1 = query.CopyToDataTable();

    var resultDataTable = filteredDataTable1.DefaultView.ToTable(false, "column1"); //create new table with only 1 column

    dataGridView1.DataSource = resultDataTable;

暫無
暫無

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

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