您的位置:首页 > 数据库

对两个数据库中的两个表进行联合查询

2012-03-30 00:07 267 查看
最近被问道了一个问题,就是如何对两个数据库里面的表进行联合查询。

后来我就用了最笨的方法实现了。希望看到的朋友能给个好的解决方法,只用一个连接字符串。最好是给个详细的教程。



首先有这样的两个数据库,每个数据库中有两个表。







表里面的数据也很简单,就是学生表和专业表,用专业号关联。

下面就在Winfrom的DataGridView上绑定数据,显示学生的编号、姓名、年龄和专业。效果如下:





由于对数据的操作我用到了linqtodataset所以项目的.net版本为3.5以上。





下面就是绑定数据的代码:

usingSystem;

[code]usingSystem.Collections.Generic;
usingSystem.ComponentModel;

usingSystem.Data;

usingSystem.Drawing;

usingSystem.Text;

usingSystem.Windows.Forms;

usingSystem.Data.SqlClient;

usingSystem.Linq;

namespaceLinkTwoData

{

publicpartialclassForm1:Form

{

publicForm1()

{

InitializeComponent();

}

stringstrcon1=@"DataSource=FENG-PC\SQLEXPRESS;InitialCatalog=test1;UserID=sa;PassWord=sa2008";

stringstrcon2=@"DataSource=FENG-PC\SQLEXPRESS;InitialCatalog=test2;UserID=sa;PassWord=sa2008";

privatevoidForm1_Load(objectsender,EventArgse)

{

SqlDataAdaptersda1=newSqlDataAdapter("select*fromstu1",strcon1);

SqlDataAdaptersda2=newSqlDataAdapter("select*fromstu1",strcon2);

DataSetds=newDataSet();

sda1.Fill(ds,"stu1");

sda2.Fill(ds,"stu2");


varquery=fromstuinds.Tables["stu1"].AsEnumerable()

fromscinds.Tables["stu2"].AsEnumerable()

wherestu.Field<int>("sc")==sc.Field<int>("sc")

selectnew

{

sno=stu.Field<int>("sno",DataRowVersion.Original),

sname=stu.Field<string>("sname",DataRowVersion.Original),

sage=stu.Field<int>("sage",DataRowVersion.Original),

scname=sc.Field<string>("scname",DataRowVersion.Original)

};


DataTabledt=newDataTable();

dt.Columns.Add("sno",typeof(int));

dt.Columns.Add("sname",typeof(string));

dt.Columns.Add("sage",typeof(string));

dt.Columns.Add("scname",typeof(string));

foreach(variteminquery)

{

DataRownewRow=dt.NewRow();

newRow["sno"]=item.sno;

newRow["sname"]=item.sname;

newRow["sage"]=item.sage;

newRow["scname"]=item.scname;

dt.Rows.Add(newRow);

}

dataGridView1.DataSource=dt.DefaultView;

}

}

}

[/code]

希望有更好实现这个功能的前辈,告诉我一下。

作者QQ:29992379
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: