收录日期:2018/09/20 15:53:14 时间:2016/05/23 01:58:27 标签:C#
有两个库,1库里表1存的是编号与价格(价格表),2库里表1存的是编号与名称(名称表)。
如何显示出编号,名称,价格?
我能不能先返回一个dataset,里面有价格表,再把名称表返回,但我不知道如何将名称表加入到同一个dataset里。然后再执行复合查询满足我要的结果。我的这些方法是在一个类里写的。
帮忙!
跨库还是跨表?什么数据库?
做个视图,select 名称,价格 from 1库.dbo.价格表,2库.dbo.名称表 where ....
跨库,access的
可以,你需要指明库、所有者、表
如:[库名].[dbo].[表名]
其中dbo为所有者,通常所有者是dbo
这是SQL Server中的用法
access的可以吗?
也可以,dataset对象其实就是一个数据缓存,可以打开第二个数据库添加指定的表
跨库查询可以实现的,access的,sql都可以,但是手工添加的代码量多些。
To::FBwwg(精锐轻骑) ( )
我不知道如何添加?最好有代码
dataset的tables.add方法可以加入多个表,然后用dataview得到想得到数据。
lib1的t1 字段 s1
lib2的t2 字段 s2
 select * from lib1..t1 a ,lib..t2 b where a.s1=b.s2

DataSet ds1 = GetDataSet     //自己写的返回dataset方法(sqlText1,ProDataBase,"price");
DataTable glj = (new GongLJData()).GetSqlReturn(sqlText2,DingEDataBase);              ////自己写的返回dataset方法
ds1.Tables.Add(glj);

string sqlText3 = "SELECT glj.工料机编号,glj.工料机名称,glj.单位,glj.规格,glj.类型,price.供应价,price.预算价,price.市场价,price.询价日期,price.供应商 FROM glj,price WHERE price.价格文件编号 = "+PriceFileId+" AND price.工料机编号 = glj.工料机编号";
            
OleDbCommand Comm = connGongLJ.CreateCommand();
Comm.CommandText = sqlText3;
OleDbDataAdapter DAdaper = new OleDbDataAdapter();
DAdaper.SelectCommand = Comm;

DataSet ds = new DataSet();
DAdaper.Fill(ds,"table1");
DataTable dt = new DataTable();
dt = ds.Tables["table1"];

return dt;
报措说“DataTable 已属于另一个 数据集“
如何做?高手帮忙呀!

use 数据库1 

go

select * from * where *

go

use 数据库2

go 

select * from * where *

go

sybase 可以
不知道access中是否行
没有试验过

你首先要明白概念:
一个dataset可以对应多个DataAdapter,每个DataAdapter对应其连接,可以是同一个Connection也可以是不同的Connection,
在一个dataset中可以包含多个table,对于不同种类的数据库,想必你的table也不同,就要放在不同的table中,
建立了dataset后,你需要添加table之间的关系(当然也可以不必要)
最后建立查询,就可以了