ole db rowset

a5a5 2000-07-10 08:32:00
在OLE DB PROVIDER程序中,PTschema和TRschema的作用是什么???

请求大家多多帮助!!!!
...全文
66 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复
深入探索了类、接口、属性和方法。讲解了数据结构,演示了如何用ado.net来解决具体的数据访问问题。重点讨论了ado.net如何有效地平衡"功能的泛化"和"执行效率",以及它如何解决对扩展性、并发性和可靠性的要求。针对其他数据访问api(包括ole db,ado,odbc和jdbc)的程序员,提供了帮助其迁移到ado.net许多易用的参考 本书由资深数据库教师编写,全面介绍了ado.net。书中深入剖析了ado.net的本质,探索了类、接口、属性和方法的工作原理,同时还为其他数据访问api(包括oledb,ado,odbc和jdbc)的程序员,提供了有价值的参考材料。本书适合具有一定数据库基础的开发人员阅读,也可用作数据库中高级课程或培训班配套教材。 第1章 数据:模型、应用程序和api 1.1 信息、数据建模和数据库 1.2 数据库和api基础 1.3 关系模型 1.3.1 关系设计规则 1.3.2 关系模型的优点 1.3.3 ado.net对关系模型的支持 1.4 层次结构、对象和混合 1.4.1 现代的非关系数据 1.4.2 多维数据 1.4.3 非关系数据和ado.net 1.4.4 xml和信息集 1.4.5 xml、数据库和统一数据表示 1.5 以数据的中心的应用程序模型 1.6 数据访问api的发展历程 1.7 小结 第2章 ado.net基础 2.1 数据访问和.net体系结构 2.2 两种数据访问模式 .2.3 连接模式 2.3.1 oledb和sqlclient数据提供程序 2.3.2 使用ado.net数据提供程序编写泛型数据访问代码 2.3.3 数据提供程序模型中的游标 2.4 断开模式和dataset 2.5 .net中的xml api 2.5.1 流式xml 2.5.2 xml架构 2.5.3 xmldocument,xpath和xpathnavigator 2.5.4 xml和数据提供程序的混合 2.6 托管数据类的布局 2.7 小结 第3章 连接模型:流式数据访问 3.1 .net数据提供程序和连接模型 3.2 连接类 3.3 连接池 3.4 元数据方法 3.5 command类 3.6 使用参数 3.7 命令的准备、取消、超时和清除 3.8 通过datareader进行流式数据传输 3.9 通过idatarecord读取列值 3.10 错误处理 3.11 使用事务处理 3.11.1 分布式事务处理 3.11.2 连接池的工作原理 3.11.3 声明性事务处理的工作原理 3.12 permission类 3.13 小结 第4章 dataset类:关系数据的集合 4.1 dataset 4.1.1 dataset作为驻留内存的数据库 4.1.2 dataset的用途 4.2 dataset对象模型 4.2.1 datacolumn,datarow和data table 4.2.2 data table及其用法 4.2.3 datarow 4.2.4 键、关系和约束 4.2.5 通过关系来导航:select和find 4.2.6 行的添加、获取、更改和删除 4.2.7 合并更改 4.2.8 合并dataset 4.2.9 datarow的状态和版本 4.2.10 规则和关系 4.2.11 错误处理 4.2.12 事件 4.2.13 dataset和非关系类型 4.3 定义信息架构 4.4 小结 第5章 dataadapter:数据库和dataset的同步 5.1 乐观并发性 5.2 dataadapter类 5.3 从托管提供程序中填充dataset 5.3.1 在fill中使用架构和映射信息 5.3.2 执行dataadapter.fill期间的错误处理 5.4 dataadapter.fill的工作原理 5.5 oledbdataadapter中的ado集成 5.6 通过dataadapter更新数据库 5.6.1 commandbuilder类 5.6.2 直接编写更新逻辑 5.7 update的工作原理 5.8 dataset事件模型 5.9 编写常规自定义命令 5.9.1 adox commandbuilder 5.9.2 构造批处理更新命令 5.10 再论dataset和非关系数据类型 5.11 应该使用dataset还是datareader 5.12 小结 第6章 数据绑定:ado.net和gui 6.1 windows窗体和web窗体 6.2 数据表示模式 6.3 使用数据绑定控件 6.3.1 web窗体数据绑定类型 6.3.2 数据绑定控件类型解析 6.3.3 同datareader绑定 6.4 用dataset进行数据绑定 6.5 data view和通用转换 6.6 表和列映射 6.7 可编辑的列表控件:datalist和datagrid 6.7.1 datalist 6.7.2 datagrid 6.8 非关系数据和data view 6.9 与visual studio的集成 6.10 控件和数据窗体 6.1l 小结 第7章 xml和数据访问的集成 7.1 xml和传统数据访问 7.2 xml和ado.net 7.2.1 定义dataset的架构 7.2.2 优化dataset的xml架构 7.2.3 将xml读入dataset 7.2.4 从dataset写入xml架构 7.2.5 microsoft特有的批注 7.2.6 从dataset写入xml数据 7.3 序列化、封送和dataset 7.4 类型化的dataset 7.5 xmldatadocument类 7.5.1 xmldatadocument和dataset 7.5.2 xmldatadocument和datadocumentxpathnavigator 7.6 数据库和xml的重要意义 7.6.1 xml作为一种特定类型 7.6.2 文档合成与分解 7.7 sql server、xml和托管数据访问 7.7.1 for xml关键字 7.7.2 openxml 7.7.3 sqloledb提供程序 7.7.4 sqlxml托管类 7.7.5 sqlxml web应用程序 7.7.6 updategram 7.7.7 sql xml oledb提供程序中的for xml 7.7.8 批量加载 7.7.9 未来的支持 7.8 使用sqlxml和.net 7.9 小结 第8章 提供程序:ado.net和数据提供程序 8.1 如何选择 8.2 保留ole dbole db概念总结 8.3 保留ole db:与oledb数据提供程序交互 8.3.1 主要的共型和类型映射 8.3.2 访问程序 8.3.3 执行命令、返回结果和使用openrowset 8.3.4 command的最终格式和行为 8.3.5 command dialect 8.3.6 层次化数据 8.3.7 从rowset更新 8.3.8 错误 8.3.9 不支持的功能 8.3.10 支持和不支持的提供程序 8.4 编写数据提供程序 8.5 实现connection类 8.5.1 规格 8.5.2 实现 8.5.3 特殊化 8.6 实现command类 8.6.1 规格 8.6.2 实现 8.6.3 特殊化 8.7 实现datareader类 8.7.1 规格 8.7.2 实现 8.7.3 特殊化 8.8 实现dataadapter类 8.8.1 规格 8.8.2 实现 8.8.3 特殊化 8.9 添加增强功能 8.10 实现xml infoset提供程序 8.11 实现xmlreader 8.12 实现xpathnavigator 8.13 其他实现方案:总结 8.14 论证大一统访问模型的可行性 8.15 小结 第9章 消费者的ado.net迁移路径 9.1 ado.net迁移路径 9.2 面向ole db程序员的ado.net 9.2.1 cotype等价物 9.2.2 数据提供程序的透明性 9.2.3 使用提供程序特有的功能 9.2.4 错误处理 9.2.5 系统提供的服务 9.2.6 系统提供的组件 9.2.7 服务提供程序 9.2.8 封送 9.3 ado概述 9.4 面向ado程序员的ado.net 9.5 ado connection、command和事务处理 9.5.1 连接和连接字符串 9.5.2 使用事务处理 9.5.3 命令和command行为 9.5.4 层次化数据 9.5.5 异步操作 9.5.6 属性 9.6 ado.net与ado断开模型的比较 9.6.1 类的等价物 9.6.2 导航 9.6.3 ado.net中的getrows有何变化 9.6.4 更新 9.6.5 创建更新语句 9.6.6 批处理更新 9.6.7 ado.net的dataset扩展 9.6.8 列和表的命名 9.6.9 排序和筛选 9.7 ado db的互操作性 9.8 面向odbc程序员的ado.net 9.8.1 句柄和环境 9.8.2 命令 9.8.3 获取数据 9.8.4 元数据和架构信息 9.8.5 错误 9.9 面向jdbc程序员的ado.net 9.9.1 泛化代码 9.9.2 提供程序的类型 9.9.3 连接池 9.9.4 非关系数据类型 9.9.5 对象数据库 9.9.6 其他sql-99扩展 9.9.7 元数据 9.9.8 事务处理 9.9.9 命令和行为 9.9.10 执行查询和返回结果 9.9.11 服务器游标 9.9.12 错误 9.10 ado.net jdbc程序员和断开模型 9.11 sql/j part 0和类型化dataset 9.12 小结 第10章 ado.net和各种数据类型 10.1 数据访问的发展历程 10.2 ado.net和基于服务器及文件的rdbms 10.3 ado.net和同种层次结构数据及ordbms 10.4 ado.net和网络数据:对象图、odbms与网络dbms 10.5 ado.net和结构化文件、多维数据及ordbms 10.6 ado.net平面文件和半结构化文件 10.7 小结 附录a 数据类型和类型映射 a.1 db type枚举 a.2 将sql server数据类型映射到sqltype及sqldbtype a.3 将ole db dbtype映射到.net数据类型 a.4 odbc类型映射 a.5 parameter.dbtype 附录b 表达式的语法 b.1 用户自定义值 b.2 运算符 b.3 字符串运算符 b.4 通配符 b.5 父/子关系引用 b.6 聚合 b.7 函数 附录c 架构推断规则 c.1 排除信息 c.2 推断过程总结 c.3 表 c.4 有属性的元素 c.5 有子元素的元素 c.6 重复元素 c.7 列 c.8 属性 c.9 没有属性或子元素的元素 c.10 关系 c.11 元素文本 c.12 限制
******* 导出到excel EXEC master..xp_cmdshell 'bcp SettleDB.dbo.shanghu out c:\temp1.xls -c -q -S"GNETDATA/GNETDATA" -U"sa" -P""' /*********** 导入Excel SELECT * FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0', 'Data Source="c:\test.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...xactions /*动态文件名 declare @fn varchar(20),@s varchar(1000) set @fn = 'c:\test.xls' set @s ='''Microsoft.Jet.OLEDB.4.0'', ''Data Source="'+@fn+'";User ID=Admin;Password=;Extended properties=Excel 5.0''' set @s = 'SELECT * FROM OpenDataSource ('+@s+')...sheet1$' exec(@s) */ SELECT cast(cast(科目编号 as numeric(10,2)) as nvarchar(255))+' ' 转换后的别名 FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0', 'Data Source="c:\test.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...xactions /********************** EXCEL导到远程SQL insert OPENDATASOURCE( 'SQLOLEDB', 'Data Source=远程ip;User ID=sa;Password=密码' ).库名.dbo.表名 (列名1,列名2) SELECT 列名1,列名2 FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0', 'Data Source="c:\test.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...xactions /** 导入文本文件 EXEC master..xp_cmdshell 'bcp dbname..tablename in c:\DT.txt -c -Sservername -Usa -Ppassword' /** 导出文本文件 EXEC master..xp_cmdshell 'bcp dbname..tablename out c:\DT.txt -c -Sservername -Usa -Ppassword' 或 EXEC master..xp_cmdshell 'bcp "Select * from dbname..tablename" queryout c:\DT.txt -c -Sservername -Usa -Ppassword' 导出到TXT文本,用逗号分开 exec master..xp_cmdshell 'bcp "库名..表名" out "d:\tt.txt" -c -t ,-U sa -P password' BULK INSERT 库名..表名 FROM 'c:\test.txt' WITH ( FIELDTERMINATOR = ';', ROWTERMINATOR = '\n' ) --/* dBase IV文件 select * from OPENROWSET('MICROSOFT.JET.OLEDB.4.0' ,'dBase IV;HDR=NO;IMEX=2;DATABASE=C:\','select * from [客户资料4.dbf]') --*/ --/* dBase III文件 select * from OPENROWSET('MICROSOFT.JET.OLEDB.4.0' ,'dBase III;HDR=NO;IMEX=2;DATABASE=C:\','select * from [客户资料3.dbf]') --*/ --/* FoxPro 数据库 select * from openrowset('MSDASQL', 'Driver=Microsoft Visual FoxPro Driver;SourceType=DBF;SourceDB=c:\', 'select * from [aa.DBF]') --*/ /**************导入DBF文件****************/ select * from openrowset('MSDASQL', 'Driver=Microsoft Visual FoxPro Driver; SourceDB=e:\VFP98\data; SourceType=DBF', 'select * from customer where country != "USA" order by country') go /***************** 导出到DBF ***************/ 如果要导出数据到已经生成结构(即现存的)FOXPRO表中,可以直接用下面的SQL语句 insert into openrowset('MSDASQL', 'Driver=Microsoft Visual FoxPro Driver;SourceType=DBF;SourceDB=c:\', 'select * from [aa.DBF]') select * from 表 说明: SourceDB=c:\ 指定foxpro表所在的文件夹 aa.DBF 指定foxpro表的文件名. /*************导出到Access********************/ insert into openrowset('Microsoft.Jet.OLEDB.4.0', 'x:\A.mdb';'admin';'',A表) select * from 数据库名..B表 /*************导入Access********************/ insert into B表 selet * from openrowset('Microsoft.Jet.OLEDB.4.0', 'x:\A.mdb';'admin';'',A表) 文件名为参数 declare @fname varchar(20) set @fname = 'd:\test.mdb' exec('SELECT a.* FROM opendatasource(''Microsoft.Jet.OLEDB.4.0'', '''+@fname+''';''admin'';'''', topics) as a ') SELECT * FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0', 'Data Source="f:\northwind.mdb";Jet OLEDB:Database Password=123;User ID=Admin;Password=;')...产品 ********************* 导入 xml 文件 DECLARE @idoc int DECLARE @doc varchar(1000) --sample XML document SET @doc =' Customer was very satisfied Important Happy Customer. ' -- Create an internal representation of the XML document. EXEC sp_xml_preparedocument @idoc OUTPUT, @doc -- Execute a SELECT statement using OPENXML rowset provider. SELECT * FROM OPENXML (@idoc, '/root/Customer/Order', 1) WITH (oid char(5), amount float, comment ntext 'text()') EXEC sp_xml_removedocument @idoc ??????? /**********************Excel导到Txt****************************************/ 想用 select * into opendatasource(...) from opendatasource(...) 实现将一个Excel文件内容导入到一个文本文件 假设Excel中有两列,第一列为姓名,第二列为很行帐号(16位) 且银行帐号导出到文本文件后分两部分,前8位和后8位分开。 邹健: 如果要用你上面的语句插入的话,文本文件必须存在,而且有一行:姓名,银行账号1,银行账号2 然后就可以用下面的语句进行插入 注意文件名和目录根据你的实际情况进行修改. insert into opendatasource('MICROSOFT.JET.OLEDB.4.0' ,'Text;HDR=Yes;DATABASE=C:\' )...[aa#txt] --,aa#txt) --*/ select 姓名,银行账号1=left(银行账号,8),银行账号2=right(银行账号,8) from opendatasource('MICROSOFT.JET.OLEDB.4.0' ,'Excel 5.0;HDR=YES;IMEX=2;DATABASE=c:\a.xls' --,Sheet1$) )...[Sheet1$] 如果你想直接插入并生成文本文件,就要用bcp declare @sql varchar(8000),@tbname varchar(50) --首先将excel表内容导入到一个全局临时表 select @tbname='[##temp'+cast(newid() as varchar(40))+']' ,@sql='select 姓名,银行账号1=left(银行账号,8),银行账号2=right(银行账号,8) into '+@tbname+' from opendatasource(''MICROSOFT.JET.OLEDB.4.0'' ,''Excel 5.0;HDR=YES;IMEX=2;DATABASE=c:\a.xls'' )...[Sheet1$]' exec(@sql) --然后用bcp从全局临时表导出到文本文件 set @sql='bcp "'+@tbname+'" out "c:\aa.txt" /S"(local)" /P"" /c' exec master..xp_cmdshell @sql --删除临时表 exec('drop table '+@tbname) /********************导整个数据库*********************************************/ 用bcp实现的存储过程 /* 实现数据导入/导出的存储过程 根据不同的参数,可以实现导入/导出整个数据库/单个表 调用示例: --导出调用示例 ----导出单个表 exec file2table 'zj','','','xzkh_sa..地区资料','c:\zj.txt',1 ----导出整个数据库 exec file2table 'zj','','','xzkh_sa','C:\docman',1 --导入调用示例 ----导入单个表 exec file2table 'zj','','','xzkh_sa..地区资料','c:\zj.txt',0 ----导入整个数据库 exec file2table 'zj','','','xzkh_sa','C:\docman',0 */ if exists(select 1 from sysobjects where name='File2Table' and objectproperty(id,'IsProcedure')=1) drop procedure File2Table go create procedure File2Table @servername varchar(200) --服务器名 ,@username varchar(200) --用户名,如果用NT验证方式,则为空'' ,@password varchar(200) --密码 ,@tbname varchar(500) --数据库.dbo.表名,如果不指定:.dbo.表名,则导出数据库的所有用户表 ,@filename varchar(1000) --导入/导出路径/文件名,如果@tbname参数指明是导出整个数据库,则这个参数是文件存放路径,文件名自动用表名.txt ,@isout bit --1为导出,0为导入 as declare @sql varchar(8000) if @tbname like '%.%.%' --如果指定了表名,则直接导出单个表 begin set @sql='bcp '+@tbname +case when @isout=1 then ' out ' else ' in ' end +' "'+@filename+'" /w' +' /S '+@servername +case when isnull(@username,'')='' then '' else ' /U '+@username end +' /P '+isnull(@password,'') exec master..xp_cmdshell @sql end else begin --导出整个数据库,定义游标,取出所有的用户表 declare @m_tbname varchar(250) if right(@filename,1)'\' set @filename=@filename+'\' set @m_tbname='declare #tb cursor for select name from '+@tbname+'..sysobjects where xtype=''U''' exec(@m_tbname) open #tb fetch next from #tb into @m_tbname while @@fetch_status=0 begin set @sql='bcp '+@tbname+'..'+@m_tbname +case when @isout=1 then ' out ' else ' in ' end +' "'+@filename+@m_tbname+'.txt " /w' +' /S '+@servername +case when isnull(@username,'')='' then '' else ' /U '+@username end +' /P '+isnull(@password,'') exec master..xp_cmdshell @sql fetch next from #tb into @m_tbname end close #tb deallocate #tb end go /************* Oracle **************/ EXEC sp_addlinkedserver 'OracleSvr', 'Oracle 7.3', 'MSDAORA', 'ORCLDB' GO delete from openquery(mailser,'select * from yulin') select * from openquery(mailser,'select * from yulin') update openquery(mailser,'select * from yulin where id=15')set disorder=555,catago=888 insert into openquery(mailser,'select disorder,catago from yulin')values(333,777) 补充: 对于用bcp导出,是没有字段名的. 用openrowset导出,需要事先建好表. 用openrowset导入,除ACCESS及EXCEL外,均不支持非本机数据导入

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧