C# 如何实现sqlserver 2008中两个数据库中两张表的关联查询。 如: sleect * from db1.tab1,db2.tab2;

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C# 如何实现sqlserver 2008中两个数据库中两张表的关联查询。 如: sleect * from db1.tab1,db2.tab2;相关的知识,希望对你有一定的参考价值。

在C#中如何执行这样的查询语句。

通过关联字段进行联接查询
select a.*,b.* from db1.tab1 a,db2.tab2 b where a.关联字段 = b.关联字段
比如说:
db1.tab1表里有一个字段叫user_id主键,db2.tab2引用了db1.tab1的主键user_id
查询时就可以写
select a.*,b.* from db1.tab1 a,db2.tab2 b where a.user_id = b.user_id追问

恩,这个我知道,但是在C#中一次连接一个数据库,而要操作这个这个sql语句,需要的是连接两个数据库才能操作这个数据库。这样的话连接字符串怎么写呢。

追答

C#不可能同时去连接两个数据库的,所有你可以在数据库里面写个视图
C#连接之后去查询这个视图,代码如下
create view 视图名
as
select a.*,b.* from db1.tab1 a,db2.tab2 b where a.user_id = b.user_id
然后c#查询时
select * from 视图名

参考技术A select a.id,a.name,b.name from db1 as a,db2 as b where a.id=b.id; 参考技术B select * from 数据库名.dbo.表名 , 数据库名.dbo.表名

请问 asp.net(c#) 如何读取sqlserver表的字段名及数据类型?

参考技术A Select   
  字段名=rtrim(b.name),    
  主键=CASE WHEN h.id IS NOT NULL  THEN 'PK' ELSE '' END,    
  字段类型=type_name(b.xusertype)+CASE WHEN b.colstat&1=1 THEN '[ID(' + CONVERT(varchar, ident_seed(a.name))+','+CONVERT(varchar,ident_incr(a.name))+')]' ELSE '' END,    
  长度=b.length,     
  允许空=CASE b.isnullable WHEN 0 THEN 'N' ELSE 'Y' END,     
  默认值=isnull(e.text, ''),    
  字段说明=isnull(c.value, '')    
FROM sysobjects a, syscolumns b    
LEFT OUTER JOIN sysproperties c ON b.id = c.id AND b.colid = c.smallid    
LEFT OUTER JOIN syscomments e ON b.cdefault = e.id    
LEFT OUTER JOIN (Select g.id, g.colid FROM sysindexes f, sysindexkeys g Where (f.id=g.id)AND(f.indid=g.indid)AND(f.indid>0)AND(f.indid<255)AND(f.status&2048)<>0) h ON (b.id=h.id)AND(b.colid=h.colid)    
Where (a.id=b.id)AND(a.id=object_id('要查询的表'))  --要查询的表改成你要查询表的名称    
orDER BY b.colid

以上是关于C# 如何实现sqlserver 2008中两个数据库中两张表的关联查询。 如: sleect * from db1.tab1,db2.tab2;的主要内容,如果未能解决你的问题,请参考以下文章

如何实现 sql2008 和 sql2012 共存?

sql连接优化[关闭]

C# 连接SQLSERVER2008 提示字符串''后的引号不完整

我们如何在 C# 中将访问数据库(.mdb)导入 sql server 2008

如何将sql2008r2数据库恢复到sql2005

如何在SQL server 2008 新建两个实例