葡京网投哪个正规 > 新葡亰-数据 > 连接数据库的方法,ODBC具体使用

原标题:连接数据库的方法,ODBC具体使用

浏览次数:193 时间:2020-01-18

  • 今天我遇到了一个需求,是将一个DBF文件导入到Oracle库中,之前一直使用的是公司提供的迁移工具,但是不知道怎么回事今天一直报DBF文件无法访问之类的错误,尝试多次之后,一气之下弃之不用,另寻他法。

--如果接受导入数据的SQL表已经存在

2012-12-10 11:50 (分类:计算机程序)

技术博客,对抗遗忘……

1.ODBC   Open Database Connectivity    
1.1 简介:
提供了一组对数据库访问的标准API(应用程序编程接口),这些API利用SQL来完成其大部分任务。ODBC本身也提供了对SQL语言的支持,用户可以直接将SQL语句送给ODBC。

ODBC现在看来是一个比较古老的东西,然而,正因为它是一个比较成熟和古老的规范,ODBC在大多数DBMS上都做可以使用,可以说一个像样的DBMS都应该支持ODBC 3.0或以上的版本。 
一个基于ODBC的应用程序对数据库的操作不依赖任何DBMS,不直接与DBMS打交道,所有的数据库操作由对应的DBMS的ODBC驱动程序完成。也就是说,不论是FoxPro、Access还是Oracle数据库,均可用ODBCAPI进行访问。由此可见,ODBC的最大优点是能以统一的方式处理所有的数据库。 
应用系统程序通过标准API进行数据源连接,因此开发过程中不需指定特定的数据库系统,所以数据库系统的开放性从此被建立。 

1.2  odbc API
其API共可分为以下九类:
I. 连接数据源(Connecting to a Data Source)
1. SQLAllocEnv.  2. SQLAllocConnect.   3. SQLConnect.  4. SQLPriverConnect.   5. SQLBrowseConnect.
II. 取得驱动程序及数据源的相关讯息
1.SQLDataSource    2.SQLGetInfo.  3SQLGetFunctions.    4.SQLGetTypeInfo.
III. 设定及取得驱动程序的选项
1. SQLSetConnectOption.    2. SQLGetConnectOption.    3. SQLSetStmtOption.     4. SQLGetStmtOption.
IV. 准备SQL指令之需求
1. SQLAllocStmt.  2. SQLPrepare.    3. SQLSetParam.    4. SQLParamOptions.    5. SQLGetCursorName. 6.SQLSetCursorName. 7. SQLSetScrollOptions.
V. 传送及执行需求
1. SQLExecute.   2. SQLExecDirect.    3. SQLNativeSql.    4. SQLDescribeParanl.    5. SQLNumParams. 6.SQLParamData. 7. SQLPutData.
VI. 取得执行结果及有关结果的讯息
1. SQLRowCount.    2. SQLNumResultCols.     3. SQLDescribeCol.    4. SQLColAttributes.   5. SQLBindCol. 6.SQLFetch.   7. SQLExtendedFetch.    8. SQLGetData.   9. SQLSetDos.   10. SQLMoreResults.   11. SQLError.
VII. 取得有关数据源系统回录(System tables or Catalog)的讯息
1. SQLColumnPrivileges.   2. SQLColumns.    3. SQLForeignkeys. 4. SQLPrimaryKeys. 5.SQLProcedureColumns. 6. SQLProcedures. 7. SQLSpecialColumns. 8. SQLStatistics. 9. SQLTablePrivileges. 10. SQLTables.
VIII. 结束 SQL 指令需求
1. SQLFreeStmt. 2. SQLCancel. 3. SQLTransact.
IX. 结束与数据源的连接
1. SQLDisconnect. 2. SQLFreeConnect. 3. SQLFreeEnv.

以上所列之 ODBC API函数,我们发现全都以 SQL 为开头。除以上述分类外,各个函数在其必要性或复杂度上, 更被规定在不同的几个层级中 ODBC 函数的层级为核心层(Core level),第一层(Level 1),和第二层(Level 2)。我们再来看一个很基本的应用程序步骤是如何呢? 下图告诉我们这个答案。

 

 

回顾 ODBC 的架构及其执行过程,ODBC 造就了"应用程序独立性(Application Independency)"的特性,使应用程序不需在乎数据源是何种数据库系统或者纯粹是个资料或文本文件,只要相对驱动程序能完成衔接的功能,则应用程序即可达到高度的独立性。 

 

1.3 MFC  封装的odbc类
MFC的 ODBC类对较复杂的ODBC API进行了封装,提供了简化的调用接口。 

MFC  ODBC将ODBC API封装在类
CDatabase、主要功能是建立与数据源的连接;
CRecordSet、代表从数据源选择的一组记录(记录集)
CFieldExchange支持记录字段数据交换RFX,即记录集字段数据成员与相应的数据库的表的字段之间的数据交换 
CRecordView  供了一个表单视图与某个记录集直接相连,利用对话框数据交替机制(DDX)在记录集与表单视图的控件之间传输数据
CDBException   代表ODBC类产生的异常。 

使用MFCODBC 开发数据库应用程序的一般步骤
使用AppWizard访问数据库
使用类CDatabase连接数据库
使用类CRecordSet打开记录集、获取数据
使用类CRecordSet的函数MoveFirst()MoveLast()MoveNext()MovePrev()IsBOF()IsEOF()进行记录集的遍 历
使用类CRecordSet的函数AddNewUpdate增加记录
使用类CRecordSet的函数EditUpdate修改记录
使用类CRecordSet的函数Delete 删除记录
使用类CDatabase的函数ExecuteSQL直接执行SQL命令
使用类CDatabase的函数BeginTransCommitTransRollback处理事务

 

1.4 简单的odbc使用方法
建立数据源后,创建包含数据源的程序,在程序中将变量与数据源字段关联,不用编写具体代码,可以查看
数据库数据, 

 

应用程序

应用程序对外提供使用者交谈界面,同时对内执行资料之准备工作数据库系统所传回来的结果在显示给使用者看。简单来说,应用程序即ODBC 界面执行下列主要工作:1. Request a connection(i.e.session) with a data source. 2. Send SQL requests to the data source. 3. Define storage areas and data formats for the result of SQL requests. 4. Request results. 5. Process errors. 6. Request a commit or rollback of operations for transcation control. 7. Terminate a connection a data source.

    ODBC(Open Database Connectivity)是微软提供的,专门为解决异构数据库间的数据共享而产生的,它建立了一组规范,并提供了一组对数据库访问的标准API(应用程序编程接口)。这些API利用SQL来完成其大部分任务。ODBC本身也提供了对SQL语言的支持,用户可以直接将SQL语句送给ODBC,一个基于ODBC的应用程序对数据库的操作不依赖任何DBMS,不直接与DBMS打交道,所有的数据库操作由对应的DBMS的ODBC驱动程序完成。也就是说,不论是FoxPro、Access还是Oracle数据库,均可用ODBC API进行访问。由此可见,ODBC的最大优点是能以统一的方式处理所有的数据库。

——以上内容来自百度

Insert Into 已经存在的SQL表名 Select * From openrowset('MSDASQL','Driver=Microsoft Visual FoxPro Driver;SourceType=DBF;SourceDB=c:','select * from aa.DBF')

驱动管理器

驱动管理器本身是MS Windows中一个动态连接链接库文件(ODBC.DLL)。应用程序透过驱动管理器去加载并连接数据源的驱动程序(driver)并连接数据源。驱动管理器主要工作如下:
1. Uses ODBC INI file to map a data source name to a specific driver DLL.
2. Processes server ODBC initialization calls.
3. Provides entry points to ODBC functions for each driver.
4. Provides parameter validation and sequence validation for ODBC calls.

  • 废话不多说,我们首先打开ODBC数据源管理程序(32位),这里因为我们的PLSQL是32位的,所以它也只能读到32位的ODBC数据源。
  • 我们要导入DBF文件,就需要能够访问DBF文件的驱动程序,这个东西呢就是Microsoft Visual FoxPro,就是一个长着狐狸头的软件啦,安装方法不再阐述,请自行摸索。在安装完VF之后,在ODBC数据源中就能够找到图中红框中的这个数据源。(注意是Visual FoxPro Tables,不是Visual FoxPro Database)

--也可以对应列名进行导入,如:

驱动程序

驱动程序也是一个动态连接链接库文件,当应用程序呼叫ODBC函数,SQLConnect 或SQLDriverConnect时,驱动管理器就会加载相对的驱动程序与应用程序呼应。驱动程序主要是执行ODBC之相对函数,并与对应的数据源(Data Source)做沟通。驱动程序之工作如下:
1. Establishes a connect to a data source.
2. Submits requests to a data sources.
3. Translates data to or from other formats,if requested by the application.
4. Return results to the application.
5. Formats errors into standard error codes and returns them to the application.
6. Declares and manipulates cursors if necessary (invisible to the application).
7. Initiates transactions if the data source requires explicit transaction initiation(invisible to the app).

 图片 1图片 2

Insert Into 已经存在的SQL表名 (列名1,列名2...) Select (对应列名1,对应列名2...) From openrowset('MSDASQL','Driver=Microsoft Visual FoxPro Driver;SourceType=DBF;SourceDB=c:','select * from aa.DBF')

数据源

 

图片 3ODBC程序流程图册

数据源唯一数据库系统(DBMS)或是数据库操作系统的一个组合。举例来说,应用库系统可以同时与下列两个或其中一个数据源连接。
1. A DBMaker DBMS running on a Microsoft Windows NT accessed by NTaccessed by TCP/IP.
2. A Tandem NonStop SQL DBMS running on the Guardian 90 accessed via a gateway.
应用系统程序通过标准API来连接数据源,因此开发过程中不需指定特定的数据库系统,所以数据库系统的开放性从此被建立。笔者认为在计算机系统进入开放时代之时,我们应可体会到标准的建立与系统的发展是同样的重要。而信息系统架构在数据库的必要性也随着信息化社会的蓬勃发展而更显重要,因此在ODBC标准日益成熟的同时,我们也同时可以感受到数据库系统在开放架构下,更需扮演强而有力的角色。
依据 ODBC 的规格,其API共可分为以下九类:
1. SQLAllocEnv.
2. SQLAllocConnect.
3. SQLConnect.
4. SQLPriverConnect.
5. SQLBrowseConnect.
1. SQLDataSource.
2. SQLGetInfo.
3. SQLGetFunctions.
4. SQLGetTypeInfo.
1. SQLSetConnectOption.
IV. 准备SQL指令之需求
1. SQLAllocStmt. 2. SQLPrepare. 3. SQLSetParam. 4. SQLParamOptions. 5. SQLGetCursorName. 6.SQLSetCursorName. 7. SQLSetScrollOptions.
1. SQLExecute. 2. SQLExecDirect. 3. SQLNativeSql. 4. SQLDescribeParanl. 5. SQLNumParams. 6.SQLParamData. 7. SQLPutData.
VI. 取得执行结果及有关结果的讯息
1. SQLRowCount. 2. SQLNumResultCols. 3. SQLDescribeCol. 4. SQLColAttributes. 5. SQLBindCol. 6.SQLFetch. 7. SQLExtendedFetch. 8. SQLGetData. 9. SQLSetDos. 10. SQLMoreResults. 11. SQLError.
VII. 取得有关数据源系统回录(System tables or Catalog)的讯息
1. SQLColumnPrivileges. 2. SQLColumns. 3. SQLForeignkeys. 4. SQLPrimaryKeys. 5.SQLProcedureColumns. 6. SQLProcedures. 7. SQLSpecialColumns. 8. SQLStatistics. 9. SQLTablePrivileges. 10. SQLTables.
VIII. 结束 SQL 指令需求
1. SQLFreeStmt. 2. SQLCancel. 3. SQLTransact.
IX. 结束与数据源的连接
1. SQLDisconnect. 2. SQLFreeConnect. 3. SQLFreeEnv.
以上所列之 ODBC API函数,我们发现全都以 SQL 为开头。除以上述分类外,各个函数在其必要性或复杂度上, 更被规定在不同的几个层级中 ODBC 函数的层级为核心层(Core level),第一层(Level 1),和第二层(Level 2)。我们再来看一个很基本的应用程序步骤是如何呢? 下图告诉我们这个答案。
回顾 ODBC 的架构及其执行过程,ODBC 造就了"应用程序独立性(Application Independency)"的特性,使应用程序不需在乎数据源是何种数据库系统或者纯粹是个资料或文本文件,只要相对驱动程序能完成衔接的功能,则应用程序即可达到高度的独立性。

 

 

-------------如果接受导入数据的SQL表不存在,导入时创建

ODBC - 更新

ODBC现在看来是一个比较古老的东西,在1996年左右就比较定型了,其最新的版本是3.8(Win7自带;Win8上有更新但仍叫 3.8),MICROSOFT也不打算对它做什么大的更新,更多的目光应该被放到OLEDB、.NET DATA PROVIDER身上了。然而,正因为它是一个比较成熟和古老的规范,ODBC在大多数DBMS上都可以使用,可以说一个像样的DBMS都应该支持ODBC 3.0或以上的版本。
如果你打算学习如何开发一个ODBC DRIVER,最好的参考资料还是MSDN。如果你不打算采用ODBC API做开发,学习和了解ODBC也可以增加对DBMS的了解,也能更好地理解其他的数据库访问接口和技术。
一个基于ODBC的应用程序对数据库的操作不依赖任何DBMS,不直接与DBMS打交道,所有的数据库操作由对应的DBMS的ODBC驱动程序完成。也就是说,不论是FoxPro、Access还是Oracle数据库,均可用ODBCAPI进行访问。由此可见,ODBC的最大优点是能以统一的方式处理所有的数据库。
开放数据库互连(ODBC)是Microsoft引进的一种早期数据库接口技术。它实际上是我们要在本章后面加以讨论的ADO的前身。Microsoft引进这种技术的一个主要原因是,以非语言专用的方式,提供给程序员一种访问数据库内容的简单方法。换句话说,访问DBF文件或Access Basic以得到MDB文件中的数据时,无需懂得Xbase程序设计语言。事实上,Visual C++就是这样一个程序设计平台,即Microsoft最初是以ODBC为目标的。
你会发现,ODBC工作起来和Windows一样,它用包含在DLL内的驱动程序完成任务。其实,ODBC提供一套两个驱动程序:一个是数据库管理器的语言,另一个为程序设计语言提供公用接口。允许Visual C++用标准的函数调用经公用接口访问数据库的内容,是这两个驱动程序的汇合点。当然,还有其它和ODBC有关的实用程序类型的DLL。例如,一个这样的DLL允许你管理ODBC数据源。ODBC的实际管理接口出现在SYSTEM文件夹中的某个CPL(控制面板)文件中寻找我们在后面要谈到这方面的问题。ODBC的确能履行承诺,提供对数据库内容的访问,并且没有太多的问题。它没有提供数据库管理器和C之间尽可能最好的数据转换,这种情况是有的,但它多半能像广告所说的那样去工作。唯一影响ODBC前程的是,它的速度极低至少较早版本的产品是这样。ODBC最初面世时,一些开发者曾说,因为速度问题,ODBC永远也不会在数据库领域产生太大的影响。然而,以Microsoft的市场影响力,ODBC毫无疑问是成功了。今天,只要有两种ODBC驱动程序的一种,那么几乎每一个数据库管理器的表现都会很卓越。

  • 在配置界面中,我们选择DBF文件所在的文件夹(不是选DBF文件,选择DBF所在的文件夹)。

--方法一:有一个缺点:把DBF表导入SQL Server中后,马上用VISUAL FOXPRO打开DBF表,会提示“不能存取文件”,即这个表还被SQL打开着呢。可是过了1分钟左右,再打开DBF表就可以了,说明经过一段时间后查询分析器才把这个表关闭。

ODBC - 使用

 

图片 4ODBC图册

在可以用ODBC做任何事之前,必须有一个数据库模型在脑子里。在一个像Access这样的应用程序中创建数据库框架通常会更容易一些,因为Access可以非常轻松地提供完成任务所需的各种功能。但是,如果你安装了所需的ODBC驱动程序,那就可以在C++中创建程序框架。一设计了数据库,就要为其创建ODBC数据源,我们会在本节中看到这一点。下面的过程并没有严格地说明活动的经过,只是说明了一种配置数据源的技术。
注释 我会在第5章中说明如何创建一个Access数据库。现在,我们只是看一看,为了访问那个数据库,我们下一步要做些什么。

图片 5ODBC图册

2.

图片 6ODBC图册

单击Add按钮。会看到Create New Data Source(创建新的数据源)对话框,如下图所示。
技巧 检查ODBC Data Source Administrator(ODBC数据源管理员)对话框的About选项卡,可以确定你正在使用的ODBC驱动程序的最新版本。这个选项卡包含了各种ODBC DLL的版本号、生产厂商的名称以及出现在SYSTEM文件夹中的文件名。大多数情况下,通过查看版本号可以验证ODBC驱动程序是否是最新的版本。
3. 选择一个数据源。对本练习来说,我选择了Access数据源。单击Finish(完成),会看到某种类型的配置对话框,如下面的ODBC Microsoft Access 97Setup(设置)对话框所示。
注释:如果你选择的数据源和我在本实例中选择的不同,那么所需的配置步骤也和这里说明的不同枣每个ODBC驱动程序都要求不同类型的配置。
4. 在Data Source Name(数据源名)域内输入数据源名称。一定要选择意义明确但又不过于冗长的名称。我选择Food Database(食品数据库),因为我最终要创建一个与食品库存有关的数据库的链接。
5. 在Description(描述)域内输入一段说明性文字。可以让这个项比上一个项稍长一些,因为它描述数据库的用途。另一方面,也不要写入像《战争与和平》那样大的小说。对本练习,我输入了:This database contains inventoryinformation for a food store(本数据库包含食品存储的库存信息)。
6. 单击Select(选择)按钮。你会看到一个File Open-type(文件ODBC打开类型)对话框,可以在那里选择一个现有的数据库。ODBC驱动程序会自动选择正确的文件扩展名。
技巧 并不是一定要提前设计数据库。请注意,Access ODBC驱动程序还包括一个创建新数据库的按钮。很多ODBC驱动程序都提供了这种功能,但并不是全都这样。单击这个按钮会启动数据库管理器应用程序,并允许你设计数据库。注意有一点很有意思,Access ODBC驱动程序还会允许你使用这个对话框压缩或修补数据库。

图片 7ODBC图册

7. 选择系统数据库选项。在大多数情况下要选择None(无),除非你为应用程序特别创建了一个系统数据库。如果确实添加了系统数据库,它会出现在ODBC Microsoft Access 97 Setup(设置)对话框的System DSN(系统DSN)选项卡上。
8. 单击Advanced(高级)按钮,会看到Set Advanced Options(设置高级选项)对话框,如下图所示。无需对很多项做修改。但是,要把客户名添加到LoginName(注册名)域中,把客户口令添加到Password(口令)域中。这允许客户在访问你的数据库时,根本不用了解访问的细节--甚至不用了解被记录的客户名。技巧 为最优化潜在的区域,可以浏览一下ODBC驱动程序提供的一系列高级选项。例如,Access ODBC允许你更改DBMS所用的线程数量。缺省设置3通常提供了不错的性能,但是你会发现,复杂程序中线程多一些的话,可以提高前台任务的速度。由于Windows使用了一些处理器循环对线程实施管理,所以使用了过多的线程又会降低应用程序的速度。
9.设置完所需的高级选项后单击OK。
10.再次单击OK关闭ODBC Microsoft Access 97 Setup(设置)对话框。应该看到,新的设置项已经添加到ODBC Data Source Administrator(ODBC数据源管理员)对话框中。如果今后要为数据库更改这些设置,只要简单地加亮它并单击Configure(配置)。删除数据库配置也很容易,只要加亮DSN并单击Remove(删除)即可。创建系统DSN和制作用户DSN差不多。两者间一个显著的差别是,使用它们的目的不同。系统DSN告诉应用程序如何与数据库相连,在一些情况下如何与之交互作用。系统DSN不包含数据库所需的任何数据--它包含连接标准,其中可以包括从用户列表到重要文件位置的一切信息。

 

          图片 8图片 9

Select * Into 要生成的SQL表名 From openrowset('MSDASQL','Driver=Microsoft Visual FoxPro Driver;SourceType=DBF;SourceDB=c:','select * from dbf表名.DBF')

ODBC - 种类

  • 配置完成DBF数据源后,我们使用需要导入的Oracle数据库用户登入PLSQL,打开ODBC导入器(工具-ODBC导入器)。先配置ODBC数据源,在连接中选择之前配置好的数据源,连接到数据源;选择需要导入的表,在下方的结果预览中能够看到数据源中的数据即为正常。

--方法二:有一个缺点:把DBF表导入SQL Server中后,马上用VISUAL FOXPRO打开DBF表,会提示“不能存取文件”,即这个表还被SQL打开着呢。可是过了1分钟左右,再打开DBF表就可以了,说明经过一段时间后查询分析器才把这个表关闭。

管理方法

ODBC 分为单束式和多束式两类
ODBC 使用层次的方法来管理数据库,在数据库通信结构的每一层,对可能出现依赖数据库产品自身特性的地方,ODBC 都引入一个公共接口以解决潜在的不一致性,从而很好地解决了基于数据库系统应用程序的相对独立性,这也是ODBC 一经推出就获得巨大成功的重要原因之一。
从结构上分,ODBC 分为单束式和多束式两类。

图片 10图片 11

Select * Into TEMP1 From openrowset('VFPOLEDB.1','C:';'admin';'' ,'select * from dbf表名.DBF')
--如果没有安装VFP,需要把vfpoledb.dll拷贝到SYSTEM目录下,并注册。

单束式驱动程序

 

图片 12ODBC图册

单束式驱动程序介于应用程序和数据库之间,像中介驱动程序一样数据提供一个统一的数据访问方式。当用户进行数据库操作时,应用程序传递一个ODBC 函数调用给ODBC 驱动程序管理器,由ODBC API 判断该调用是由它直接处理并将结果返回还是送交驱动程序执行并将结果返回。由上可见,单束式驱动程序本身是一个数据库引擎,由它直接可完成对数据库的操作,尽管该数据库可能位于网络的任何地方。

 

  • 切换Tab页到“到Oracle的数据”,选择需要导入的表的用户及其表名称,事务提交的行数可以根据需要导入的数据量适当的调整,我这里调整为1000条数据提交一次,导入的形式为覆盖导入(主键重复数据覆盖而非跳过)。在字段栏中,将DBF和Oracle数据库的字段进行对应,要注意字段类型的选择,不选择字段类型的话将不会导入该列数据。

--方法三:导入SQL SERVER后,源表再用VFP打开就不提示“不能存取文件”,说明语句执行后就把源表关闭了。不过也有不尽人意的地方,就是用前两种方式导入后,源表中的字符型字段导入后SQL表字段对应变成NVARCHAR了。

多束式驱动程序

多束式驱动程序负责在数据库引擎和客户应用程序之间传送命令和数据,它本身并不执行数据处理操作而用于远程操作的网络通信协议的一个界面。
前端应用程序提出对数据库处理的请求,该请求转给ODBC 驱动程序管理器,驱动程序管理器依据请求的情况,就地完成或传给多束驱动程序,多束式驱动程序将请求翻译为特定厂家的数据库通信接口(如Oracle 的SQLNet)所能理解的形式并交于接口去处理,接口把请求经网络传送给服务器上的数据引擎,服务器处理完后把结果发回给数据库通信接口,数据库接口将结果传给多束式ODBC 驱动程序,再由驱动程序将结果传给应用程序。

图片 13图片 14

Select * Into 要生成的SQL表名 From OPENROWSET('MICROSOFT.JET.OLEDB.4.0','dBase IV;HDR=NO;IMEX=2;DATABASE=c:','select * from dbf表名.dbf')

ODBC - 文件DSN

你可能已经注意到了,上一节中的实例有问题。如果想单独配置网络上的每一台机器,它会工作得很好,但这可能不是一个好主意。还有一种存储创建数据源所需信息的方式:文件DSN。这正是我们要在本节中讨论的。下面的过程说明了设置文件DSN的一般方法。

 

图片 15ODBC图册

1. 双击Control Panel(控制面板)中的32位ODBC小程序,会看到ODBCData Source Administrator(ODBC数据源管理员)对话框。选择File DSN(文件DSN)选项卡,会看到如下图所示的对话框。要做的第一件事是,选择存储DSN信息的地方。2. 单击Look In(观察)下拉列表框,会看到一系列当前机器的目录和驱动器。可以为DSN使用任何存储位置。我通常在网络上选择数据库存储目录。使用UNC(通用命名标准)意味着,每个人都会用相同的路径来访问DSN文件。
技巧 Up One Level(上一和在Explorer中是一样的。可以用该按钮返回到上一级目录。最后,你会在My Computer(我的电脑)处结束,看到机器上所有驱动器的清单。
3. 单击Add(添加),会看到Create New Data Source(创建新的数据源)对话框。
4. 在列表中选择一个ODBC驱动程序,然后单击Next(下一个)。对本示例来说,我再次选择Access。你会看到Create New Data Source(创建新的数据源)对话框的下一页显示出来。在这里选择数据源的名称和存储位置。单击Browse(浏览)会看到File Open-type(文件打开类型)对话框,在这里选择存储位置。输入一个文件名,ODBC向导自动添加DSN作为扩展名。在本示例中,我选择SAMPLE.DSN作为DSN文件的名称。5. 单击Next(下一个)会看到一个摘要对话框,如下图所示。它说明正准备创建的DSN的参数。6. 单击Finish(完成)。这时,会看到ODBC Microsoft Access 97 Setup(设置)对话框的修改版。不能像我们在上一节所做的那样,在Data Source Name(数据源名)或Description(描述)字段中添加信息了,不过,其它的都和以前一样。7. 一定要单击Select(选择)按钮输入数据库的名称,然后选择想要使用的数据库(如果想创建一个新数据库,也可以单击Create(创建))。
8. 完成配置过程时单击OK,你会在ODBC Data Source Administrator(ODBC数据源管理员)对话框中看到一个新的DSN文件项。和我们创建的前一个DSN不同,这个DSN实际上创建可以用文本编辑器来查看和编辑的文件。图4.1显示了我的文件的外观。请注意,它符合标准的INI文件格式。你可以在顶端看到【ODBC】标题。下面是我选择的全部设置。这个文件允许我从Visual C++选择数据源,而机器间的传输也是非常容易的。我甚至能在安装过程中按要求更改位置--在你不知道用户会有什么样的设置时,这一点确实很不错。

 

  • 完成导入,不光是DBF,EXCEL,ACCESS,SQLServer等都可以通过ODBC导入来实现数据的迁移。

--方法四:导入SQL SERVER后,源表再用VFP打开就不提示“不能存取文件”,说明语句执行后就把源表关闭了。不过也有不尽人意的地方,就是用前两种方式导入后,源表中的字符型字段导入后SQL表字段对应变成NVARCHAR了。

ODBC - 图书信息

图书一 

图片 16开放数据库互联(ODBC)技术与应用图册

基本信息
开放数据库互联(ODBC)技术与应用
作者:文必龙
ISBN:9787030055888
出版社:科学出版社
出版时间:1997
主题:数据库管理系统--接口
内容简介
开放数据库互联(ODBC)为数据库应用程序访问异构型数据库提供了统一的数据存取API,应用程序不必重新编译、连接就可以与不同的DBMS相联。目前支持ODBC的有Oracle,Access,X-Base等10多种流行的DBMS。本书介绍了ODBC的基本原理及SQL语言,并从两个角度介绍ODBC技术:一是从ODBC应用程序设计者的角度,将应用和开发中通常要用到的编程环节先总结成框架形式,然后分步骤讲解;另一是从ODBC驱动程序开发人员的角度,介绍如何开发ODBC驱动程序。本书还介绍了有关ODBC软件安装及数据源配置的方法。本书适用于广大数据库应用人员和开发人员,也可供大、中专院校师生参考。
图书二 
书名:开放数据库互连
作者:( 美)Que Corporation著
ISBN号:7-302-02035-3
价格: 40.00
出版地:北京
出版社:清华大学出版社
出版时间:1995.11
页数:355 页
开本:16开
附注 :北京科海培训中心
本书原文名:Using ODBC 2
其他版本 :Using ODBC 2
主题 :关系数据库 -- 应用程序
科图分类号 :73.967
责任者:Que Corporation 著
孟小峰译

 

Select * Into 要生成的SQL表名 From OPENROWSET('MICROSOFT.JET.OLEDB.4.0','dBase III;HDR=NO;IMEX=2;DATABASE=c:','select * from dbf表名.dbf')

ODBC - 记录事务

调试应用程序时加以记录,这一点很重要。ODBC Data Source Administrator(ODBC数据源管理员)对话框也提供了这样的功能。可以选择跟踪你通过ODBC对数据库进行的各种事务。当然,这些记录可能会变得相当大,但我们并不是总要使用它们。
开始记录事务时,只要双击控制面板(Control Panel)中的32位ODBC小程序,打开ODBC Data Source Administrator(ODBC数据源管理员)对话框。选择Tracing(跟踪)选项卡,你会看到如下图所示的对话框(请注意,该对话框的Windows 98版本略有不同)。如你所见,有三个单选按钮确定何时跟踪ODBC调用。缺省设置是Don'tTrace(不跟踪)。如果打算调试单个应用程序,应该选择All the Time(全部时间)。One-Time Only(只一次)在下一次连接期间跟踪ODBC调用枣只要连接一拆除,跟踪就关闭。当用户带着特定的问题调用时,这是一个不错的选择。可以监视一次会话期间的连接,然后用该信息帮助创建排除错误的计划。
跟踪不会自动开始。还要单击对话框右侧的Start Tracing Now(现在开始跟踪)。只要跟踪一开始,按钮标题就变成Stop Tracing Now(现在停止跟踪)。再次单击按钮关闭跟踪过程。
唯一要担心的其它设置是Log File Path(记录文件路径)。ODBC通常在根目录下的SQL.LOG文件中放入事务信息。但是,也可以将该信息放在网络驱动器上,或者用户看不到的地方。在调试过程中,缺省位置通常就比较适宜。
注释 除非你想创建自己的日志记录DLL,否则不要更改Custom Trace DLL(自定义跟踪DLL)域内的设置。在这里列出的DLL枣ODBCTRAC.DLL枣负责维持事务记录。

--方法五:用BDE驱动导入时,再用VFP打开源表时不会提示“不能存取文件”

Select * From OPENROWSET('MSDASQL','CollatingSequence=ASCII;DBQ=D:SEND;DefaultDir=D:SEND;Deleted=0;Driver={Driver do Microsoft dBase (*.dbf)};FIL=dBase 5.0','select * from dbf表名.DBF') A
--前提:先在机器上安装BDE的驱动

--也可以只导几个字段

Select * Into 要生成的SQL表名 From openrowset('MSDASQL','Driver=Microsoft Visual FoxPro Driver;SourceType=DBF;SourceDB=c:','select 字段1,字段2 from aa.DBF')

/*说明:
SourceDB=c: c:是dbf文件的存放目录
aa.Dbf 是dbf文件名
*/

工具导入1:通过SQL Server的“导入导出数据”工具(DTS)

1、建立Visual FoxPro的数据源:

在ODBC中建立一个Visual FoxPro的数据源(ODBC-Microsoft Visual FoxPro Driver)的步骤如下:
打开ODBC配制窗口 ->
选择“用户DSN”页面或“系统DSN”页面,建议用后者 ->
点击“添加”按钮 ->
选择“Microsoft Visual FoxPro Driver”这个驱动 ->
在Data Source Name(数源源名称)处输入此数据源名称,可自定,本例如LjDbf,Database Type(数据库类型)处选择“Free Table directory”(自由表路径),然后在下面的Path(路径)处设置你要导入的DBF表所在的路径,本列如“D:” ->
点击“OK”(确定)配制完成 ->
关闭ODBC配制窗口

2、通过SQL的导入导出数据(DTS)来把DBF表导成SQL表:

开始 ->
程序 ->
Microsoft Sql Server-导入导出数(DTS)->
下一步 ->
此步为“选择数据源”的窗口,“数据源”选“Microsoft Visual FoxPro Driver”,同时在"用户/系统DSN"处选择你刚刚配制的数据源名(本例如LjDbf,当然上面配制数据源的过程也可以通过“用户/系统DSN”后面有一个“新建”按钮来完成),然后点击“下一步” ->
此步为“选择目的”的窗口,“目的”选"用于SQL Server的Microsoft OLE DB提供程序"(此项一般为默认),同时选择你要导成的SQL表的存放数据库、服务器及服务器的验证方式,然后点击“下一步” ->
这时:
A:如果要把DBF表全部字段均导入,则选择“从源数据库复制表和视图”,点击“下一步” ->
选择要导入的DBF表,在‘目的’处可修改生成SQL表的名称,默认与DBF表名一样,点击“下一步” ->
再点击“下一步” ->
最后点击“完成”进行导入即可(导入成功与否DTS会有提示)。

B:如果只导入DBF表中的几个字段或全部字段(如果导入全部字段,也可以用上面步骤A,结果是一样的,只是方法不同),则选择“用一条查询指定要输出的数据”,点击“下一步” ->
点击“查询生成器”,选择要导入的DBF表(此时可选择列),点击“下一步” ->
指定排序顺序,选一个或多个排序字段,如果不用排序,此步可略,点击“下一步” ->
此步可以指定查询条件,如果没有条件,此步可略,点击“下一步” ->
出现了对应的SQL语句(也可以再修改生成的SQL语句,但不推荐),再点击“下一步” ->
这时可修改要生成的SQL表名,默认为“结果”,再点击“下一步” ->
再点击“下一步” ->
最后点击“完成”进行导入即可(导入成功与否DTS会有提示)。

工具导入2:

先把DBF表转成EXCEL或TXT,然后SQL SERVER的导入导出工具把EXCEL或TXT导入即可(此方法类似方法二,不再介绍)。

----------Sql Server表 导出 Dbf----------

方法一:如果DBF表已经存在,在查询分析器中执行以下语句(先选择对应的数据库)

Insert Into openrowset('MSDASQL','Driver=Microsoft Visual FoxPro Driver;SourceType=DBF;SourceDB=c:','select * from 表B.DBF') Select * From 表a

/*说明:
SourceDB=c: c:是dbf文件的存放目录
表B.Dbf 是已经存在dbf文件名,数据导入此表
表A.Dbf 是要导出的SQL表名
*/

方法二:如果DBF表不存在,直接导出时创建,通过SQL Server的“导入导出数据”工具

1、建立Visual FoxPro的数据源:

在ODBC中建立一个Visual FoxPro的数据源(ODBC-Microsoft Visual FoxPro Driver)的步骤如下:
打开ODBC配制窗口 ->
选择“用户DSN”页面或“系统DSN”页面,建议用后者 ->
点击“添加”按钮 ->
选择“Microsoft Visual FoxPro Driver”这个驱动 ->
在Data Source Name(数源源名称)处输入此数据源名称,可自定,本例如LjDbf,Database Type(数据库类型)处选择“Free Table directory”(自由表路径),然后在下面的Path(路径)处随便设置一个路径,本列如“D:” ->
点击“OK”(确定)配制完成 ->
关闭ODBC配制窗口

2、通过SQL的导入导出数据(DTS)来把SQL表导成DBF表:

开始 ->
程序 ->
Microsoft Sql Server-导入导出数(DTS)->
下一步 ->
此步为“选择数据源”的窗口,“数据源”选"用于SQL Server的Microsoft OLE DB提供程序"(此项一般为默认),同时选择你要导出的SQL表所在数据库、服务器及服务器的验证方式,然后点击“下一步” ->
此步为“选择目的”的窗口,“目的”选“Microsoft Visual FoxPro Driver”,同时在"用户/系统DSN"处选择你刚刚配制的数据源名(本例如LjDbf,当然上面配制数据源的过程也可以通过“用户/系统DSN”后面有一个“新建”按钮来完成),然后点击“下一步” ->
这时:
A:如果要把被导出的SQL表的全部字段均导出,则选择“从源数据库复制表和视图”,点击“下一步” ->
选择要导出的表或视图,在‘目的’处可修改生成的DBF表的名称,默认与SQL表名一样,点击“下一步” ->
再点击“下一步” ->
最后点击“完成”进行导出即可(导出成功与否DTS会有提示),导出成功之后的DBF表的主文件名与SQL的表名一样。

B:如果只导出SQL表中的几个字段或全部字段(如果导出全部字段,也可以用上面步骤A,结果是一样的,只是方法不同),则选择“用一条查询指定要输出的数据”,点击“下一步” ->
点击“查询生成器”,选择要导出的SQL表(此时可选择列),点击“下一步” ->
指定排序顺序,选一个或多个排序字段,如果不用排序,此步可略,点击“下一步” ->
此步可以指定查询条件,如果没有条件,此步可略,点击“下一步” ->
出现了对应的SQL语句(也可以再修改生成的SQL语句,但不推荐),再点击“下一步” ->
这时可修改要生成的DBF表名,默认为“结果”,再点击“下一步” ->
再点击“下一步” ->
最后点击“完成”进行导出即可(导出成功与否DTS会有提示)。

注:
导出成功后,DBF文件一般存于 Microsoft Sql Server80ToolsBinn 或 Program FilesCommon FilesODBCData Sources目录下,并没有存于上面所说的D:,这个我也不知为什么,哪位如果知道,请告之。 

oConnection = Createobject("adodb.connection")
With oConnection
.ConnectionString = 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:;Extended Properties=dbase 5.0;Persist Security Info=False'
.Open
Endwith
TEXT To lcStr Noshow
Select * Into 要生成的DBF表名 From Sql表名 in [odbc] [ODBC;Driver=SQL Server;UID=sa;PWD=;Server=计算机名;DataBase=数据库名]
Endtext
oConnection.EXECUTE(lcStr)
oConnection.Close
原文:

本文由葡京网投哪个正规发布于新葡亰-数据,转载请注明出处:连接数据库的方法,ODBC具体使用

关键词:

上一篇:实现大数据即席查询秒级响应,大数据交互式分析实践

下一篇:没有了