2
我需要检查一个表(表1)中是否添加了某些内容,如果需要,我需要从该表中取一些值并将其插入第二个表(表2) 。 问题是表1是通过OleDbConnection连接的.DBF Provider = VFPOLEDB.1,而第二个表2是通过SqlConnection连接的MSSQL表。c#结合来自两个不同数据库提供商的两个结果
我想让这样的事情: SELECT列1 FROM表1 WHERE列1 NOT IN(SELECT列2 FROM表2)
是否有可能做到这一点?我可以通过做加载两个表到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的。 Mayby我可以做2个数据集或类似这个查询的临时表?所以它会是这样的? :
SELECT dataset1.column1 FROM dataset1 WHERE dataset1.column1 NOT IN (SELECT dataset2.column2 FROM dataset2)
谢谢你的回答。我会对此进行测试,但我以前从未使用过Linq,所以你可以进一步解释这一点吗?我如何使用它,我应该使用什么提供者或DataAdapter来填充数据集?我想要显示在新的DataGridView中传输。 – RobaQ
你已经有2种方法获取datatables.get 2个数据表使用这些方法,然后LINQ查询将给你你想要的数据。最终绑定查询到你的数据网格。 – ClearLogic
好的,但是当我制作时: 'dvgTest.DataSource = datatable1;' 我得到一个DataTable1结果,并没有问题。 datatable2相同。但是当我在LINQ中更容易一些: 'var query = from datatable2.AsEnumerable() select c; dvgTest.DataSource = query;' 我不会得到任何结果。为什么? – RobaQ