下面是小编整理的Excel 访问远程数据的四种方法数据库教程(共含5篇),欢迎您阅读分享借鉴,希望对您有所帮助。同时,但愿您也能像本文投稿人“老实人在这”一样,积极向本站投稿分享好文章。
excel|访问|数据
Excel 2000作为一个电子表格软件,它不仅有强大的数据处理能力,而且它的报表功能也是十分强大,Excel 2000访问远程数据的四种方法数据库教程
。因而常常用Excel 2000去调用Access、SQL Server、Oracle、DB2等数据库软件建立的大型数据库的内容。用户可以在工作表中对这些数据进行筛选、排序、查询、编辑和打印报表,十分方便,这也是大多数人都熟悉的。但如何去调用这数据呢?本人在这里提供4种方法。下面四种方法必须要先创建一个数据源,我们以SQL Server7.0内的样本数据库pubs为例。在控制面板/ODBC数据源/系统DSN,单击增加按纽,选取SQL Server驱动程序,建立一个与pubs数据库连接的叫pubs名称数据源。
方法一:
在Excel 2000中,选择 数据/获取外部数据/新建数据库查询,然后按向导的提示一步一步做,最后将数据返回Excel 2000中就行了
这种方法是大家常用的,也是最方便的。但这种方法只能对远程数据进行查询,不能对远程数据进行增加和修改。
方法二:
这种方法需要VBA编程(方法三、方法四也一样),在Visual Basic编程中,我们经常用ADO来访问数据。ADO是Microsoft提供的针对各种各样数据源的新型高级编程接口。它支持大多数据库操作,在Excel 2000中应用ADO来访问数据,是十分理想的方法。看看下面一个实例:
Sub opendb
Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset
Set cn = New ADODB.Connection
Set rs = New ADODB.Recordset
cn.Open “Provider=MSDASQL.1;Persist Security Info=False;Data Source=pubs”
rs.Open “select * from authors”, cn
Range(“a1”).CopyFromRecordset rs
Rs.close
cn.Close
End Sub
宏中第一、二句定义了一个ADO 的Connection对象和一个Recordset对象,第三、四句创建了一个ADO 的Connection对象和一个Recordset对象。第五句连接到前面我们建立的数据源pubs数据库。第六句是ADO 的Recordset对象执行一条SQL里select语句。在这也可以执行insert,update等等SQL语句的。第七句是将rs里的记录返回当前表里。第八、九句是关闭连接。运行前要在Excel 2000工具/引用中引用ADO的库文件。
在Excel 2000中应用ADO对象,不仅可以对数据库进行查询,而且可以作增加,修改数据库的记录,甚至可以调用SQL SERVER7.0的存储过程,加强Excel 2000对数据库处理能力。
方法三:
Excel 2000的功能是十分强大的,它自带了一个ODBC加载宏,我们在Excel 2000中引用这个宏文件xlodbc.xla,就可以通过下面的方法去访问我们建立的数据源了
Sub opendb()
Dim id as integer
id = SQLOpen(“DSN=pubs”)
SQLExecQuery id, “select * from authors”
Set utput = Worksheets(“Sheet1”).Range(“A1”)
SQLRetrieve id, output, , ,
True SQLClose id
End sub
第二句是调用xlodbc.xla宏中的SQLOpen函数建立一个对数据库pubs连接,第三句是SQLExecQuery函数执行了一条select语句,id是由 SQLOpen 函数返回的唯一连接标识,第四句是SQLRetrieve函数将SQLExecQuery函数执行的查询的结果返回到Excel 2000中,
这种编程方法可以说来的容易,用得方便。也是一种好的访问远程数据方法。
方法四:
这种方法是使用API方法,下面是一个实例
'分配环境句柄
res = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HENV, hEnv)
'设置环境属性
res = SQLSetEnvAttr(hEnv, SQL_ATTR_ODBC_VERSION, SQL_OV_ODBC3, 0)
'分配数据库连接句柄
res = SQLAllocHandle(SQL_HANDLE_DBC, hEnv, hSvr)
'连接到数据源
sConnect=“DSN=pubs;DATABASE=pubs“
res=SQLDriverConnect(hSvr,ByVal,0&,sConnect,Len(sConnect),sConnOut, Len(sConnOut), _ nConnOutLen, 0)
sSql =“select * from authors“
res = SQLExecDirect(hSel, sSql, Len(sSql))
'将记录返回当前表里
res=SQLNumResultCols(hSel, Nc)
Do While (SQLFetch(hSel) SQL_NO_DATA_FOUND)
J=j+1
FOR I=1 TO Nc
res = SQLGetData(hSel, I, SQL_C_CHAR, tmp, 512, pl)
Cells(j, i) =tmp
Next I
Loop
'释放数据库连接句柄
res = SQLAllocHandle(SQL_HANDLE_STMT, hSvr, hSel)
'释放数据库连接句柄
ret = SQLFreeHandle(SQL_HANDLE_ENV, hEnv)
这种方法比较复杂,调试也比较困难,但运行速度快,在进行大量查询数据和自己在API调用方面比较熟时,可以用这个方法。在用上面的实例时,要做API声明和常量的定义。
除了XML 技术之外,Microsoft SQL Server 的开发者们也把通过HTTP 访问的特性(HTTP access9 作为SQL Server 2000 的一个核心特性,
基于HTTP 的数据访问数据库教程
。这样用户完全可以把SQL Server 放到一个URL 上了,从而保证开发人员和潜在的最终用户都能简单地通过一个URL 来访问SQL Server。 本节我们主要介绍以下三个问题:如何创建虚拟目录
HTTP 的语法
HTTP 的访问能力20.4.1 创建虚拟目录
在使用HTTP 访问SQL Server 2000 数据库前必须首先利用IIS 专门为SQL Server 提供的虚拟目录管理器来创建虚拟目录(virtual directory), 同时确保使用的操作系统支持IIS 服务器。创建虚拟目录其主要目的就是在SQL Server 实例与新创建的虚拟目录之间建立新的连接。下面以一个具体的例子来介绍创建虚拟目录要执行哪些步骤。
(1) 在SQL Server Tool 程序单中选择Configure SQL XML Support in IIS 选项。
(2) 打开要创建虚拟目录的服务器图标,然后选择管理站点图标。右击该图标在弹出菜单中选择New ,单击Virtual Directory。
(3) 选中General 标签页,如图20-3 所示。
(4) 该标签页用来给出HTTP 存取数据库数据时所要使用的虚拟目录以及虚拟目录的真实目录的路径。真实目录主要存放通过该虚拟目录要访问的文件,此外模板文件(template files) 和注释匹配模式文件(annotated mapping schema files) 也存储在该目录。在该例中我们在Virtual Directory Name 中输入VirtualRoot; 在Local Path 中输入 E:Inetpubwwwroot VirtualRoot。
(5) 选中Security 标签页,如图20-4 所示。
该标签页用来定义登录的认证方法,共在三种IIS 认证模式。
Always log on as
Windows 和SQL Server 帐号与IIS 认证安全的匿名访问模式相匹配。匿名访问是指任何人都可以访问虚拟目录,但是访问服务器的任何一个客户都必须提供正确的帐号和口令才能够登录成功。其中SQL Server 选项表示当指定SQL Server 登录时,虚拟目录的所有用户都可以使用该SQL Server 登录帐号;Windows 选项表示为所有使用该虚拟目录的用户指定一个Windows 帐号,在缺省情况下使用安装IIS 时的缺省用户IUSR_ServerName。
Use Windows Integrated Authentication
该选项表示使用Windows NT 或Windows 2000 的IIS 认证方法,即合法的 Windows NT 或Windows 2000 用户才具有访问虚拟目录的权限。该访问模式要求 Windows 用户也具有访问SQL Server 的权限。
Use Basic Authentication (Clear Text) to SQL Server account
该选项是指通过SQL Server 登录和口令来进行安全认证。本认证模式与IIS 的基本认证模式不同。我们可以使用匿名认证。(6) 选中Data Source 标签页,如图20-5 所示。在Data Source 标签页主要完成两个任务,其一是选择一个SQL Server 2000 运行实体,其二选择包含在该实体内且被HTTP 访问的数据库,
在本例中选择Pubs 数据库。
(7) 选中Setting 标签页,如图20-6 所示。 Setting 标签页用来确定将使用何种SQL Server 2000 访问类型来通过虚拟目录进行数据访问。应该指出模板(Template) 文件和模式(Schema) 文件可以存储在任何地方。
Allow URL queries
表示直接在URL 中执行SQL 查询,但是考虑到访问的安全性我们建议不使用该选项。
Allow template queries
表示在URL 中执行已存在的模板文件。模板是合法的XML 文档,包括一个或多个SQL 查询。在缺省情况下使用该选项。
Allow XPath
表示直接在URL 中对注释匹配模式进行查询。
(8) 选中Virtual Names 标签页,如图20-7 所示。
该标签页主要用来定义虚拟名称。在URL 中只能使用虚拟名称,基于安全考虑,任何关于执行的对象以及文件的存储位置等信息都被隐藏。
Defined virtual names 表示在访问网络资源时将要用到的虚拟名称。比如通过IISServer/VirtualRoot/ temvir/可以访问位于VirtualRoot 虚拟目录下的temvir。
Type 指出要创建的虚拟名称属于哪一个查询类型。
dbobject 表示查询的是数据库对象。
schema 表示对匹配模式执行Xpath 查询。
template 表示模板文件中的SQL 查询。
path 指出模板或模式所在的目录路径,该路径可以是相对路径也可以是绝对路径。如果查询类型为dbobject, 则不需指明路径。该路径可以指文件夹(虚拟名称)的路径也可以指一文件路径。如果指文件夹(虚拟名称)的路径,则在URL 中必须加上文件的名称。例如: IISServer/VirtualRoot/ temvir/sample.xml(9)选中Advanced 标签页,如图20-8 所示。
Advanced 标签页主要是用来指定sqlisapi.dll 存放的位置,通过虚拟目录访问 SQL Server 2000 实体时需要使用该文件。如果虚拟目录被创建于远程服务器上,则必须提供存放位置。在缺省情况下sqlisapi.dll 文件被安装于FilesCommon FilesSystemOle DB 目录下。
20.4.2 HTTP 的访问能力
在SQL Server 2000 中,HTTP 的访问能力得到了明显的提高用户,不仅可以在 URL 中直接输入SQL 语句或存储过程,而且能够在URL 中加入模板文件或进行 XPath 查询。在详细介绍这些访问方法之前首先让读者了解HTTP 的语法。
3 在URL 中使用模板
虽然在URL 中直接执行SQL 语句有着简单、快速的优点,但是目前这种方式在大部分互联网环境中都是不合适的。因为开发者不会希望用户书写或是看到SQL 语句,因为这可能泄露访问开发者数据库的内部机制。出于安全原因,开发者显然不会希望这样。因此对于开发人员来说更好的选择就是允许通过URL 来访问指定服务器端的XML 模板。这虽然提供了对SQL Server 的直接访问但是实际已把SQL Select 语句或XPath 查询请求隐藏在了XML 模板中。因此许多中间层代码的使用和数据库交互过程就不必要了。以此方法,可以简便快速地把数据库放置到网络上。这也是SQL Server 为开发人员提供的一种更快捷地跟上市场需要的方法。
access|server|sqlserver|访问|服务器|链接|数据|数据库
Web 开发中,经常要用到 Access 数据库,但是由于 Access 是一种文件型数据库,所以无法跨服务器进行访问。经过笔者的探索,发现可以利用 SQL Server 的链接服务器,把地理上分散的 Access 数据库整合起来,使 Access 数据库具有跨越 Web 服务器群的能力。这样做,还可以使 Access 数据库与 SQL Server,甚至 Oracle 等网络数据库连接起来,实现异构数据库的互连,从而执行分布式的查询、更新、命令和事务。
一、创建链接服务器,连接本地 Access 数据库
创建链接服务器可以用“企业管理器”,也可以执行系统存储过程 sp_addlinkedserver 来完成。用系统存储过程相对快捷一些,格式为:
sp_addlinkedserver '链接服务器名', '产品名', 'Microsoft.Jet.OLEDB.4.0', 'Access数据库路径及文件名'
指定 Microsoft.Jet.OLEDB.4.0 作为 provider_name,指定 Access 数据库文件的完整路径名作为 data_source。.mdb 数据库文件必须驻留在本地服务器上,路径必须是服务器上的有效路径。
例如,本例创建一个名为 mytest 的链接服务器,对 E:我的文档 文件夹下名为 DOS.mdb 的 Access 数据库进行操作,则在“SQL查询分析器”中执行:
sp_addlinkedserver 'mytest', 'Access 2000', 'Microsoft.Jet.OLEDB.4.0', 'E:我的文档DOS.mdb'
二、创建链接服务器登录映射
同样可以用“企业管理器”或存储过程来完成。存储过程的格式为:
sp_addlinkedsrvlogin '链接服务器', false, 'SQLServer登录名', 'admin', NULL
为访问非保密的 Access 数据库,试图访问 Access 数据库的 SQL Server 登录应该有一个为用户 Admin 定义的没有密码的登录映射,下例使得本地用户 sa 可以访问名为 mytest 的链接服务器:
sp_addlinkedsrvlogin 'mytest', false, 'sa', 'admin', NULL
要访问保密的 Access 数据库,需使用注册表编辑器配置注册表,以便使用 Access 的正确的工作组信息文件。使用注册表编辑器向该注册表项中添加 Access 使用的工作组信息文件的完整路径名称:
HKEY_LOCAL_MACHINE OFTWAREMicrosoftJet4.0Engines ystemDB
配置了注册表项后,请使用 sp_addlinkedsrvlogin 创建从本地登录到 Access 登录的登录映射:
sp_addlinkedsrvlogin 'mytest', false, 'sa', '[AccessUser]', '[AccessPwd]'
链接服务器和链接服务器登录映射建立完毕,可以在企业管理器里进行查看,
三、链接服务器的测试
可以在“SQL查询分析器”里对创建的链接服务器进行测试。由于 Access 数据库没有目录和架构名称,因此,基于 Access 的链接服务器中的表可以在分布式查询中使用 [linked_server]...[table_name] 的四部分名称进行引用。下例从名为 mytest 的链接服务器中检索 articles 表的所有行:
Select * from mytest...articles
或:Select * from OpenQuery(mytest, 'Select * from .articles')
四、用代码访问链接服务器的 Access 数据库
只有实现用代码访问链接服务器的 Access 数据库,才使得链接服务器发挥了最大的灵活性和实用性。可以使用三中的测试链接服务器的代码建立存储过程,供 Asp 代码调用,也可以直接在 Asp 代码中调用链接服务器,以下是我通过测试的例子:
<%
Dim conn, sSQL, rs
conn=“Provider=sqloledb; server=localhost; uid=sa; pwd=SQLSERVER;” '用户 sa 的密码为 SQLSERVER。可以省略数据库名
on error resume next
sSQL = “select * from mytest...articles”
Set rs = Server.CreateObject(“ADODB.Recordset”)
rs.open sSQL, conn, 1, 1
rs.movefirst
response.write rs(0) & “
”
if err.number0 then
response.write “取数据错误:数据库连接出错,或存取数据表错误!”
else
response.write “OK!”
end if
%>
张庆 .10.1 3:58
数据
1、在的你计算机上安装sql server数据库的软件(注意:相同版本的数据库系统)
2、点击开始 -- 程序 -- Microsoft SQL Server -- 客户端网络实用工具 -- 另名 -- 点击添加 --- 网络库选取TCP/IP;服务器别名:数据库服务器的IP;服务器名称:数据库服务器的IP;端口默认1433 -- 确定
3、点击开始 -- 程序 -- Microsoft SQL Server -- 企业管理器 -- Mouse点 Microsoft SQL Servers -- mouse右键点 Sql Server 组;点新的sql server 注册.... -- 下一步 -- 增加主机IP,下一步---选“系统管理员给我分配的SQL Server登录信息....”.
下一步 -- 登录名:用户名、密码:密码、下一步 -- ……
4、联接成功后;请您找到您的数据库;你就可管理你的数据库,
注:不要越权。一般情况下你是只能看到别的数据库的名称而没有管理权限
---------------------------------------------------------------------
一.设置客户端网络实用工具
点击“开始”-“程序”,在“Microsoft SQL Server”菜单中选择“客户端网络实用工具”,
在“别名”选项中点击“添加”。
在“服务器别名”中,填入您网站域名,在“网络库”区域中点击“TCP/IP”,在“连接参数”区域取消“动态决定端口”,指定“端口号”为2433。填写完毕后,点击“确定”按钮保存配置。
二.企业管理器的使用
点击“开始”-“程序”,在“Microsoft SQL Server”菜单中打开“企业管理器”。在企业管理器中,右键单击“SQL Server组”,选择“新建SQL Server注册”。
此时会出现SQL Server属性窗口,在“服务器”中填入您网站的域名,选择“使用SQL Server身份验证”,“登录名”和“密码”分别填入主机开通邮件中的用户名和密码,然后点击“确定”。
连接成功后,你会看到“SQL Server组”中多了一个名称为您网站域名的服务器。此时,您就可以像操作本地SQL数据库一样管理网站数据库了。
注意事项
如果连接的时候出现超时错误,更改超时时间即可,方法是点击“工具”-“选项”。
在属性窗口中选择“高级”选项卡,将“登录超时”的数值设置为0。
数据
如果你要把ORACLE里的大量数据(80M以上)转移到另外的用户,另外的表空间里,可以用下面介绍的快速转移数据的方法。
一、建新表的方式
create table target_tablename tablespace target_tablespace_name nologging
pctfree 10 pctused 60
storage(initial 5M next 5M minextents 1 maxextents unlimited pctincrease 0)
as select * from username.source_tablename where 条件;
注意事项: 新建的表没有原来表的索引和默认值,
只有非空(not null)的约束素条件可以继承过来,
其它的约束条件或索引需要重新建立.
二、直接插入的方法
INSERT /*+ APPEND */ INTO target_tablename
SELECT * FROM username.source_tablename where 条件;
COMMIT;
注意事项:
用INSERT /*+ APPEND */ 的方法会对target_tablename产生级别为6的独占锁,
如果运行此命令时还有对target_tablename的DML操作会排队在它后面,
对OLTP系统在用的表操作是不合适的,
说明:这两种方法转移数据时没有用SGA里数据缓冲区和事物处理的回滚段, 也不写联机事物日志,
就象数据库装载工具SQLLOAD一样直接把数据写到物理文件,速度是很快的。
在ORACLE8I以后的版本都可以使用.