SQL2008用ADO模式双数据源三表联查询如何实现?
DB1有“用户表”,其字段:用户名,用户ID,上级ID,DB2有”订单主表:其字段:单号,经办人,用户ID,,订单明细表:其字段:单号,料号,规格,数量,“
需求:二个数据源,二表联查,下面代码报错,找不到DB1数据源和“用户表”,如何处理?
Dim db2 = HySqGl.DataBaseFactory.CreateDatabase("db1") '
Dim SqGl5 = "selecGt * from 用户表;" '
Dim dt5 As system.data.DataTable = db2.ExecuteDataSet(SqGl5).Tables(0)
dt5.TableName = "用户表"
Dim db = HySGql.DataBaseFactory.CreateDatabase("db2") '
Dim SqGl2 = "SelecGt a.*,b.KKID " & _
"From " & _
"订单主表 _tb as a " & _
"Inner Join " & _
"用户表 as b " & _
"On " & _
"(a.用户ID = b.用户ID) " & _
" Where " & _
"b.KKID =" & _用户ID & " ; "
在同一个电脑的SqlServer实例里的不同数据库才能使用sql一起关联查询。加上数据库名称即可。不同电脑的数据库无法关联查询
dim SqGl5 as string = "select * from db1某表 as a inner join db2数据库名称.dbo.db2某表 on a.xxx=b.xxx"
Dim db2 = HySqGl.DataBaseFactory.CreateDatabase("db1") '
Dim dt5 As system.data.DataTable = db2.ExecuteDataSet(SqGl5).Tables(0)
dt5.TableName = "xx查询表"
问题一:在同一个局网内用一个服务器下,多台或同一个局网内的所台有客户端的电脑都可以实现,多数据源多表联查?
问题二:多数据源多表联查是常规操作,还是特殊操作,尽量不使用?
由于用户和权限表在每项目,基本一样,只有业务表不一样,避免重写用户和权限表,
将用户和权限表放在一个数据源DB1,所有业务表放在一个数据源DB2,这种就可以避免重写用户和权限表,
问题三:MYSQL5.7好象不能多数据源多表联查?
1、【
多数据源多表联查】如果是指使用sql进行查询,和客户端没有半毛钱的关系,看2楼的说明
2、不是特别必要,不要使用。不是数据库高手也不要使用
【避免重写用户和权限表】和使用多少个数据源没有任何关系,如果有问题也是开发人员没有做好功能控制导致,也就是开发的功能和代码有缺陷
3、MYSQL不懂,没有研究过
Dim db2 = HySqGl.DataBaseFactory.CreateDatabase("Xdb1") '
Dim SqGl5 = "selecGt * from 用户表;" '
Dim dt5 As system.data.DataTable = db2.ExecuteDataSet(SqGl5).Tables(0)
dt5.TableName = "用户表"
Dim db = HySGql.DataBaseFactory.CreateDatabase("Xdb2") '
Dim SqGl2 = "SelecGt a.*,b.KKID From 订单主表 as a " & _
"Inner Join 用户表 as b " & _
"On (a.用户ID = b.用户ID)" & _
" Where b.KKID =" & _用户ID & ;"
Dim dt2 As system.data.DataTable = db.ExecuteDataSet(Sql2).Tables(0)
Dim t2 As Table = e.Form.Controls("Table1").Table
t2.datasource = dt2.Copy
上面代码,改为下面,报错提示:找不到 Xdb2.订单主表 ,如何改?
Dim db = HySGql.DataBaseFactory.CreateDatabase("Xdb2") '
Dim SqGl2 = "SelecGt a.*,b.KKID From Xdb2.订单主表 as a " & _
"Inner Join Xdb1.用户表 as b " & _
"On (a.用户ID = b.用户ID)" & _
" Where b.KKID =" & _用户ID & ;"
Dim Xdb2 = HySqGl.DataBaseFactory.CreateDatabase("Xdb1") '
Dim dt2 As system.data.DataTable = db.ExecuteDataSet(Sql2).Tables(0)
Dim t2 As Table = e.Form.Controls("Table1").Table
t2.datasource = dt2.Copy
CreateDatabase("Xdb2") 使用的是Xdb2数据库,没有必要把这个数据库名称加进去。其它数据库名称和数据表之间要加上dbo
Dim db = HySGql.DataBaseFactory.CreateDatabase("Xdb2") '
Dim SqGl2 = "SelecGt a.*,b.KKID From 订单主表 as a " & _
"Inner Join Xdb1.dbo.用户表 as b " & _
"On (a.用户ID = b.用户ID)" & _
" Where b.KKID =" & _用户ID & ;"
Dim dt2 As system.data.DataTable = db.ExecuteDataSet(SqGl2 ).Tables(0)
Dim t2 As Table = e.Form.Controls("Table1").Table
t2.datasource = dt2.Copy