Excel到SQLServer数据库的数据导入导出技术研究

合集下载

access、excel与sqlserver的数据表格之间

access、excel与sqlserver的数据表格之间

熟悉SQL SERVER 2000的数据库管理员都知道,其DTS可以进行数据的导入导出,其实,咱们也可以利用Transact-SQL语句进行导入导出操作。

在Transact-SQL语句中,我们主要使用OpenDataSource函数、OPENROWSET 函数,关于函数的详细说明,请参考SQL联机帮忙。

利用下述方式,可以十分容易地实现SQL SERVER、ACCESS、EXCEL 数据转换,详细说明如下:一、SQL SERVER 和ACCESS的数据导入导出常规的数据导入导出:使用DTS向导迁移你的Access数据到SQL Server,你可使用这些步骤:1在SQL SERVER企业管理器中的Tools(工具)菜单上,选择Data Transformation2Services(数据转换服务),然后选择czdImport Data(导入数据)。

3在Choose a Data Source(选择数据源)对话框当选择Microsoft Access as the Source,然后键入你的.mdb数据库(.mdb文件扩展名)的文件名或通过阅读寻觅该文件。

4在Choose a Destination(选择目标)对话框中,选择Microsoft OLE DB Prov ider for SQL Server,选择数据库服务器,然后单击必要的验证方式。

5在Specify T able Copy(指定表格复制)或Query(查询)对话框中,单击Copy tables (复制表格)。

6在Select Source T ables(选择源表格)对话框中,单击Select All(全数选定)。

下一步,完成。

Transact-SQL语句进行导入导出:1. 在SQL SERVER里查询access数据:SELECT *FROM OpenDataSource('','Data Source="c:\";User ID=Admin;Password=')...表名2. 将access导入SQL server在SQL SERVER 里运行:INTO newtableFROM OPENDATASOURCE ('','Data Source="c:\";User ID=Admin;Password=' )...表名3. 将SQL SERVER内外的数据插入到Access表中在SQL SERVER 里运行:insert into OpenDataSource('','Data Source=" c:\";User ID=Admin;Password=')...表名(列名1,列名2)select 列名1,列名2 from sql表insert into OPENROWSET('','C:\';'admin';'', T est)select id,name from TestINSERT INTO OPENROWSET('', 'c:\'; 'admin'; '', 表名)SELECT *FROM sqltablename二、SQL SERVER 和EXCEL的数据导入导出一、在SQL SERVER里查询Excel数据:SELECT *FROM OpenDataSource('','Data Source="c:\";User ID=Admin;Password=;Extended properties=Excel ')...[Sheet1$]下面是个查询的示例,它通过用于Jet 的OLE DB 提供程序查询Excel 电子表格。

如何把EXCEL数据导入到SQLSERVER数据库中

如何把EXCEL数据导入到SQLSERVER数据库中

如何把EXCEL数据导入到SQLSERVER数据库中将Excel数据导入SQL Server数据库可以通过以下步骤实现:1. 打开Excel文件并选择要导入的数据:首先,打开Excel文件并选择要导入到SQL Server数据库的数据。

确保数据位于连续的单元格区域内,并且包含正确的列和行标题。

2. 导出Excel数据为CSV格式:将Excel数据导出为CSV(逗号分隔值)格式,这种格式是一种常见的数据交换格式,可以方便地被导入到SQL Server数据库中。

在Excel中,选择“文件”>“另存为”,然后选择CSV格式进行保存。

3. 创建目标表:在SQL Server数据库中创建一个目标表,用于存储要导入的数据。

可以使用SQL Server Management Studio或任何其他SQL编程工具来创建表。

确保表结构与将要导入的Excel数据的列和行标题相匹配。

4. 定义目标表的列:为目标表定义与Excel数据相匹配的列,保证目标表的列名与Excel数据的列名相同,并且数据类型也相匹配。

如果需要修改列的数据类型或长度,可以使用ALTER TABLE语句进行修改。

5. 使用SQL Server导入向导:使用SQL Server导入向导来导入CSV文件中的数据。

打开SQL Server Management Studio,右键单击目标数据库,选择“任务”>“导入数据”来打开导入向导。

6. 选择数据源:在导入向导的“选择数据源”步骤中,选择适当的数据源类型,这里选择“Flat File Source”,然后浏览找到之前保存的CSV文件。

7. 配置数据源:在导入向导的“配置Flat File Source”步骤中,配置CSV文件的设置。

确保分隔符设置为逗号(CSV的默认分隔符),并根据需要调整其他设置。

点击“下一步”继续。

8.选择目标数据库:在导入向导的“选择目标表或查看现有表”步骤中,选择目标数据库和表。

将Excel表数据导入MS SQL Server数据库表的一种有效方法

将Excel表数据导入MS SQL Server数据库表的一种有效方法

将Excel表数据导入MS SQL Server数据库表的一种有效方

魏景东
【期刊名称】《电脑编程技巧与维护》
【年(卷),期】2013(0)7
【摘要】介绍在B/S应用系统开发时,将数据从Excel表导入到MS SQL Server2005数据库表的一种有效方法,结合示例,给出了导入功能的C#实现编码.【总页数】4页(P53-56)
【作者】魏景东
【作者单位】
【正文语种】中文
【相关文献】
1.SQL Server中的数据导入MYSQL [J], 赵永霞;李文杰;
2.SQL Server中的数据导入MYSQL [J], 赵永霞;李文杰
3.利用GridView控件显示MS SQLServer2005数据库表BLOB数据 [J], 魏景东
4.在C#中存取MS SQL Server数据库表中BLOB数据 [J], 魏景东
5.基于VC#的Excel表格与SQL Server数据库的批量数据导入导出技术研究 [J], 尹帮治
因版权原因,仅展示原文概要,查看原文内容请购买。

SQL Server与Excel中数据的导入导出基本方法

SQL Server与Excel中数据的导入导出基本方法

从SQL Server中导入/导出Excel的基本方法从sql server中导入/导出excel 的基本方法/*=========== 导入/导出excel 的基本方法===========*/从excel文档中,导入数据到sql数据库中,很简单,直接用下面的语句:/*=============================================*/--假如接受数据导入的表已存在insert into 表select * fromopenrowset(microsoft.jet.oledb.4.0,excel 5.0;hdr=yes;database=c:test.xls,sheet1$)--假如导入数据并生成表select * into 表fromopenrowset(microsoft.jet.oledb.4.0,excel 5.0;hdr=yes;database=c:test.xls,sheet1$)/*===========================================*/--假如从sql数据库中,导出数据到excel,假如excel文档已存在,而且已按照要接收的数据创建好表头,就能够简单的用:insert into openrowset(microsoft.jet.oledb.4.0,excel 5.0;hdr=yes;database=c:test.xls,sheet1$)select * from 表--假如excel文档不存在,也能够用bcp来导成类excel的文档,注意大小写:--导出表的情况exec master..xp_cmdshell bcp 数据库名.dbo.表名out "c:test.xls" /c -/s"服务器名" /u"用户名" -p"密码"--导出查询的情况exec master..xp_cmdshell bcp "select au_fname, au_lname frompubs..authors order by au_lname" queryout "c:test.xls" /c -/s"服务器名" /u"用户名" -p"密码"/*--说明:c:test.xls 为导入/导出的excel文档名.sheet1$ 为excel文档的工作表名,一般要加上$才能正常使用.--*/--上面已说过,用bcp导出的是类excel文档,其实质为文本文档,--要导出真正的excel文档.就用下面的方法/*--数据导出excel导出表中的数据到excel,包含字段名,文档为真正的excel文档,假如文档不存在,将自动创建文档,假如表不存在,将自动创建表基于通用性考虑,仅支持导出标准数据类型--邹建2003.10--*//*--调用示例p_exporttb @tbname=地区资料,@path=c:,@fname=aa.xls--*/if exists (select * from dbo.sysobjects where id = object_id(n[dbo].[p_exporttb]) and objectproperty(id, nisprocedure) = 1)drop procedure [dbo].[p_exporttb]gocreate proc p_exporttb@tbname sysname, --要导出的表名@path nvarchar(1000), --文档存放目录@fname nvarchar(250)= --文档名,默认为表名asdeclare @err int,@src nvarchar(255),@desc nvarchar(255),@out int declare @obj int,@constr nvarchar(1000),@sql varchar(8000),@fdlist varchar(8000)--参数检测if isnull(@fname,)= set @fname=@tbname+.xls--检查文档是否已存在if right(@path,1)<> set @path=@path+create table #tb(a bit,b bit,c bit)set @sql=@path+@fnameinsert into #tb exec master..xp_fileexist @sql--数据库创建语句set @sql=@path+@fnameif exists(select 1 from #tb where a=1)set @constr=driver={microsoft excel driver (*.xls)};dsn=;readonly=false +;create_db=" +;database=+@sql+"--连接数据库exec @err=sp_oacreate adodb.connection,@obj outif @err<>0 goto lberrexec @err=sp_oamethod @obj,open,null,@constrif @err<>0 goto lberr/*--假如覆盖已存在的表,就加上下面的语句--创建之前先删除表/假如存在的话select @sql=drop table [+@tbname+]exec @err=sp_oamethod @obj,execute,@out out,@sql--*/--创建表的sqlselect @sql=,@fdlist=select @fdlist=@fdlist+,[++],@sql=@sql+,[++]+case when in(char,nchar,varchar,nvarchar) thentext(+cast(case when a.length>255 then 255 else a.length end as varchar)+)when in(tynyint,int,bigint,tinyint) then intwhen in(smalldatetime,datetime) then datetimewhen in(money,smallmoney) then moneyelse endfrom syscolumns a left join systypes b on a.xtype=b.xusertypewhere notin(image,text,uniqueidentifier,sql_variant,ntext,varbinary,binary,timestamp) and object_id(@tbname)=idselect @sql=create table [+@tbname+](+substring(@sql,2,8000)+),@fdlist=substring(@fdlist,2,8000)exec @err=sp_oamethod @obj,execute,@out out,@sqlif @err<>0 goto lberrexec @err=sp_oadestroy @obj--导入数据set @sql=openrowset(microsoft.jet.oledb.4.0,excel 5.0;hdr=yes;database=+@path+@fname+,[+@tbname+$])exec(insert into +@sql+(+@fdlist+) select +@fdlist+ from +@tbname) returnexec sp_oageterrorinfo 0,@src out,@desc outlbexit:select cast(@err as varbinary(4)) as 错误号,@src as 错误源,@desc as 错误描述select @sql,@constr,@fdlistgo--上面是导表的,下面是导查询语句的./*--数据导出excel导出查询中的数据到excel,包含字段名,文档为真正的excel文档,假如文档不存在,将自动创建文档,假如表不存在,将自动创建表基于通用性考虑,仅支持导出标准数据类型--邹建2003.10--*//*--调用示例p_exporttb @sqlstr=select * from 地区资料,@path=c:,@fname=aa.xls,@sheetname=地区资料--*/if exists (select * from dbo.sysobjects where id = object_id(n[dbo].[p_exporttb]) and objectproperty(id, nisprocedure) = 1)drop procedure [dbo].[p_exporttb]gocreate proc p_exporttb@sqlstr varchar(8000), --查询语句,假如查询语句中使用了order by ,请加上top 100 percent@path nvarchar(1000), --文档存放目录@fname nvarchar(250), --文档名@sheetname varchar(250)= --要创建的工作表名,默认为文档名declare @err int,@src nvarchar(255),@desc nvarchar(255),@out int declare @obj int,@constr nvarchar(1000),@sql varchar(8000),@fdlist varchar(8000)--参数检测if isnull(@fname,)= set @fname=temp.xlsif isnull(@sheetname,)= set @sheetname=replace(@fname,.,#)--检查文档是否已存在if right(@path,1)<> set @path=@path+create table #tb(a bit,b bit,c bit)set @sql=@path+@fnameinsert into #tb exec master..xp_fileexist @sql--数据库创建语句set @sql=@path+@fnameif exists(select 1 from #tb where a=1)set @constr=driver={microsoft excel driver (*.xls)};dsn=;readonly=false +;create_db=" +;database=+@sql+"--连接数据库exec @err=sp_oacreate adodb.connection,@obj outif @err<>0 goto lberrexec @err=sp_oamethod @obj,open,null,@constrif @err<>0 goto lberr--创建表的sqldeclare @tbname sysnameset @tbname=##tmp_+convert(varchar(38),newid())set @sql=select * into [+@tbname+] from(+@sqlstr+) aexec(@sql)select @sql=,@fdlist=select @fdlist=@fdlist+,[++],@sql=@sql+,[++]+case when in(char,nchar,varchar,nvarchar) thentext(+cast(case when a.length>255 then 255 else a.length end as varchar)+)when in(tynyint,int,bigint,tinyint) then intwhen in(smalldatetime,datetime) then datetimewhen in(money,smallmoney) then moneyelse endfrom tempdb..syscolumns a left join tempdb..systypes b ona.xtype=b.xusertypewhere notin(image,text,uniqueidentifier,sql_variant,ntext,varbinary,binary,timestamp) and a.id=(select id from tempdb..sysobjects where name=@tbname) select @sql=create table [+@sheetname+](+substring(@sql,2,8000)+),@fdlist=substring(@fdlist,2,8000)exec @err=sp_oamethod @obj,execute,@out out,@sqlif @err<>0 goto lberrexec @err=sp_oadestroy @obj--导入数据set @sql=openrowset(microsoft.jet.oledb.4.0,excel 5.0;hdr=yes;database=+@path+@fname+,[+@sheetname+$])exec(insert into +@sql+(+@fdlist+) select +@fdlist+ from [+@tbname+])set @sql=drop table [+@tbname+]exec(@sql)returnlberr:exec sp_oageterrorinfo 0,@src out,@desc out lbexit:select cast(@err as varbinary(4)) as 错误号,@src as 错误源,@desc as 错误描述select @sql,@constr,@fdlistgo。

教你在SQLServer数据库中导入导出数据.

教你在SQLServer数据库中导入导出数据.

教你在SQL Server数据库中导入导出数据在我们建立一个数据库时,并且想将分散在各处的不同类型的数据库分类汇总在这个新建的数据库中时,尤其是在进行数据检验、净化和转换时,将会面临很大的挑战。

幸好SQL Server为我们提供了强大、丰富的数据导入导出功能,并且在导入导出的同时可以对数据进行灵活的处理。

在SQL Server中主要有三种方式导入导出数据:使用Transact-SQL对数据进行处理;调用命令行工具BCP处理数据;使用数据转换服务(DTS)对数据进行处理。

这三种方法各有其特点,下面就它们的主要特点进行比较。

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------一、使用方式的比较1. 使用Transact-SQL进行数据导入导出我们很容易看出,Transact-SQL方法就是通过SQL语句方式将相同或不同类型的数据库中的数据互相导入导出或者汇集在一处的方法。

如果是在不同的SQL Server数据库之间进行数据导入导出,那将是非常容易做到的。

一般可使用SELECT INTO FROM 和INSERT INTO。

使用SELECT INTO FROM时INTO后跟的表必须存在,也就是说它的功能是在导数据之前先建立一个空表,然后再将源表中的数据导入到新建的空表中,这就相当于表的复制(并不会复制表的索引等信息)。

而INSERT INTO的功能是将源数据插入到已经存在的表中,可以使用它进行数据合并,如果要更新已经存在的记录,可以使用UPDATE。

[SQL]将Excel表数据导入SQL Server2005的几种方法归纳

[SQL]将Excel表数据导入SQL Server2005的几种方法归纳

[SQL]将Excel表数据导入SQL Server2005的几种方法归纳近日在巨轮着手车间负荷数据处理,反馈回来的数据是保存在Excel文件中的,我必须将其导入SQL Server2005中,供存储过程计算。

由于之前没有将Excel数据导入SQL Server2005的经验,因此摸索着花了一天时间才搞定。

下面将网上收集到的几种导入方法做个归纳。

方法一、利用SQL Server2005自带的DTS工具,手工导入:第一步是点击开始并选择运行并输入CMD然后在命令提示符里输入DTSWIZARD。

SQL Server 导入和导出向导的欢迎界面将显示出来,如下图所示:(也可以这样打开该界面:1、登录到 SQL Server Management Studio。

2、在“对象资源管理器”中右键单击“管理”,在弹出列表中单击“导入数据”。

)当你点击下一步按钮时,它将进入选择数据源向导界面。

用户应该选择数据源为Microsoft Office 12.0 Access Database Engine OLE DB Provider 然后在向导界面中点击属性…按钮,它将弹出数据链接属性界面。

在所有标签页中,双击数据源属性值并输入电子数据表的位置,例如“C:\Excel2007\Import\SampleData.xlsx”作为导入数据的数据源的Microsoft Office Excel 2007文件名称和路径。

然后双击扩展属性并选择Excel 12.0作为属性值。

到Microsoft Office Excel 2007的连接可以通过点击测试连接按钮来进行测试,如下图所示:在下一个页面中,数据源需要选为SQL Native Client,因为数据将导入到SQL Server 2005。

然后你需要选择数据所要导入的服务器名称,并需要配置合适的验证模式,它之后跟着数据库名称。

在这个例子中,我们将使用windows验证连接到本地SQL Server实例,所使用的数据库将是ImportExcel。

如何将数据从 Excel 导入到 SQL Server

如何将数据从 Excel 导入到 SQL Server

本文循序渐进地演示如何用不同的方法将数据从Microsoft Excel 工作表导入到Microsoft SQL Server 数据库。

回到顶端技术说明本文中的示例使用以下工具导入Excel 数据:∙SQL Server 数据传输服务(DTS)∙Microsoft SQL Server 2005 Integration Services (SSIS)∙SQL Server 链接服务器∙SQL Server 分布式查询∙ActiveX 数据对象(ADO) 和Microsoft OLE DB Provider for SQL Server∙ADO 和Microsoft OLE DB Provider for Jet 4.0回到顶端要求下面的列表列出了推荐使用的硬件、软件、网络架构以及所需的Service Pack:∙Microsoft SQL Server 7.0、Microsoft SQL Server 2000 或Microsoft SQL Server 2005 的可用实例∙Microsoft Visual Basic 6.0(针对使用Visual Basic 的ADO 示例)本文的部分内容假定您熟悉下列主题:∙数据传输服务∙链接服务器和分布式查询∙Visual Basic 中的ADO 开发回到顶端示例导入与追加本文使用的示例SQL 语句演示了“创建表”查询。

该查询通过使用SELECT...INTO...FROM 语法将Excel 数据导入新的SQL Server 表。

如这些代码示例所示,在继续引用源对象和目标对象时,可以通过使用INSERT INTO...SELECT...FROM 语法将这些语句转换成追加查询。

使用DTS 或SSIS可以使用“SQL Server Data Transformation Services (DTS) 导入向导”或“SQL Server 导入和导出向导”将Excel 数据导入到SQL Server 表中。

SQL_Server数据与Excel表的导入导出

SQL_Server数据与Excel表的导入导出

SQL_Server数据与Excel表的导入导出SQL Server与Excel的数据交换几乎所有的数据库管理者或者是与数据库打过交道的朋友,几乎都或多或少的了解并使用过数据导入导出的功能以便完成支持诸如数据合并、归档和分析等任务,以及开发应用程序或升级数据库或服务器,而这一切的便利都已经被SQL Server中的数据转换服务(DTS)囊括其中,它提供了一套图形化工具和可编程对象,以帮助管理员和开发人员和需要进行数据维护的人员解决数据移动问题,其中包括将数据从分散的数据源中提取出来,并且转换、合并到一个或多个目标位置。

可以将任务组、工作流操作以及约束条件收集起来形成DTS 软件包,然后安排它定期运行或在某些事件发生后运行。

首先我们来先认识一下什么是DTS,它是一组工具,用于在一个或多个数据源(如Microsoft SQL Server、Microsoft Excel或Microsoft Access)间导入、导出和转换各种数据。

通过OLE DB(一种数据访问的开放式标准)提供连接,通过用于ODBC的OLE DB 提供程序来支持ODBC(开放式数据库连接)数据源。

在这里我们将以具体的实例来介绍DTS数据的导入导出功能。

例:使用DTS向导导出自己建立的dmtjxxb数据库中的dmtjxxb_register 表,到Excel表中。

操作步骤为:(1)启动SQL Server企业管理器(Enterprise Manager)后,点击SQL Server组,选择指定的服务器,如此次操作的数据库是我本地的数据库,如图:SQL Server企业管理器本地数据库选中要导出的数据库名称,点击鼠标右键,在弹出的菜单点击“所有任务”选择“导出数据”选项,如下图所示,就会弹出数据导入导出向导。

(2)单击“下一步”按钮,打开选择数据源对话框,如下图所示:首先在“数据源”旁的下拉列表中选择数据源。

在本例中选择Microsoft OLE DB Provider for SQL Server。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Excel到S QL Server数据库的数据导入导出技术研究3王晓刚 杨春金(武汉理工大学信息工程学院 武汉 430063)摘 要 介绍Del phi中,采用新一代数据访问技术dbExp ress和OLE技术来实现Excel数据表到S QL Server数据库的数据导入和导出,及其在高速公路车辆查询系统中的应用。

关键词 dbExp ress S QL server Excel OLE中图分类号 TP317.31 引言办公自动化信息管理系统的用户常常会遇到需要把由Excel存储的数据资料导入到S QL Server 数据库,同时又要把S QL Server数据库中的数据导出到Excel数据表的问题。

不同的编程语言有不同的解决方法。

本文介绍应用Del phi编程来实现Excel数据表到S QL Server数据库的数据导入导出技术。

2 基本思路OLE自动化是W indows应用程序操纵另一个程序的一种机制。

被操纵的一方称为自动化服务器,操纵自动化服务器的一方称为自动化控制器。

通过引用这些对象实现对自动化服务器的调用,然后通过设置对象的属性和使用对象的方法操纵自动化服务器,实现两者之间的通讯。

Del phi在数据库方面提供的强大又富有弹性的能力给广大编程人员带来了方便。

dbExp ress是Del phi下一代的数据访问技术。

提供高效率数据访问以及提供跨平台能力的数据访问引擎。

dbEx2 p ress包含了7个组件,它们是TS QLConnecti on、TS QLDataSet、TS QLQuery、TS QLSt oredPr oc、TS QLT2 able、TS QLMonit or和TSi m p le DataSet,这些组件的功能就是让应用程序连接后端数据库,访问数据表中的数据,把修改的数据更新回数据库中以及让程序员观察dbExp ress向后端数据库下达命令等。

Del phi完全支持OLE应用程序自动化,提供的Servers栏控件可以很容易开发OLE自动化控制器实现对OLE自动化服务器的调用。

在Del phi内部运行OLE自动化程序需要在U ses语句中加入Co2 mobj来开始自动化程序。

通过调用Create O le Ob2 ject来检索一个自动化对象,Create O le Object调用大量系统内部的OLE函数,创建一个I dis patch的实例,并从Variant中返回一个Del phi变量类型,可以根据不同的环境提供不同的功能,这里我们使用Variant来引用Excel内部的对象以建立Del phi与Excel之间的连接。

并采用dbExp ress建立Del phi 和S QL Server之间的连接,来实现Excel数据表到S QL Server数据库的数据导入和导出。

3 dbExp ress访问S QL Server技术dbExp ress通过TS QLConnecti on组件同S QL Server数据库进行连接。

双击TS QLConnecti on,就会弹出它的组件编辑器,在这个组件编辑器里,我们就可以定义连接数据库的类型,数据库名称,登陆帐号、密码等信息。

以下就是我们连接名为DB2 SERVER的数据库服务器的具体情况:D river Name=MSS QL//数据库类型Host N a me=DBSERVER//数据库服务器Database=ETEST//数据库名U ser_Na me=sa//登陆帐号Pass word=sa//登陆密码B l obSize=-1LocaleCode=0000MSS QL Transls olati on=ReadComm itedOS Authenticati on=False在连接上数据库以后,dbExp ress提供了两种方法:一是使用TSi m p le DataSet组件;二是使用TS QLDataSet搭配T DataSetPr ovider和TClient D ata2 Set组件来对数据库进行访问。

在实现简单数据访85 计算机与数字工程 第35卷3收到本文时间:2006年6月8日作者简介:王晓刚,男,硕士研究生,研究方向:网络设计及信息管理。

杨春金,男,副教授,研究方向:信号与信息处理。

问操作中,这两种方法在功能上几乎是一模一样的,但是在有高性能要求的应用中,就需要使用第二种方法来实现对数据库的访问。

本文只涉及简单的数据访问功能,所以采用第一种方法来实现对数据库的访问操作。

定义待访问的数据表名为‘CS BY’,则具体的操作步骤如下:(1)在For m中放置TS QLConnecti on组件,按照连接数据库的方法建立与S QL Server数据库的连接,设置该组件的Connected属性为True以打开连接,LoginPr o mp t属性为False以避免每次连接数据库时都出现登陆框,设置Na me属性为S QLCon2 necti on1。

(2)在For m中放置TSi m p le DataSet组件,设置该组件的Connecti on属性为S QLConnecti on1,Data2 mandText为‘select3fr om CS BY’,设置Na me属性为Si m p le DataSet1。

(3)在For m中放置T DataSource组件,设置该组件的DataSet属性为Si m p le DataSet1,设置Na me 属性为DataSource1。

(4)在For m中放置T DBGrid组件,设置该组件的DataSource属性为DataSource1,设置Name属性为DBGrid1,表CS BY中的数据将显示在T DBGrid 组件中。

4 Excel数据表到S QL Server数据库的数据导入导出技术的应用:在襄十高速公路车辆查询系统中,有很多由Excel数据表存储的数据资料需要导入到S QL Server数据库中,例如《载货类汽车质量参数调整更正表》就需要导入到S QL Server数据库中以便用来查询。

如果由人工录入,工作量太大。

解决的方法有两种,一是利用S QL Server企业管理器的导入导出向导功能直接将Excel数据表中的数据导入到S QL Server数据库中,但是这样数据库将暴露在普通用户面前,一旦用户误操作,就会造成很大的损失。

二是在襄十高速公路车辆查询系统中实现数据导入的功能,这样可以避免数据库直接面向普通用户。

这里采用方法二来实现数据导入功能。

襄十高速公路车辆查询系统查询出来的结果需要导出到Excel数据表中,以报表的形式向上提交。

这就需要在襄十高速公路车辆查询系统中实现能够将S QL Server数据库中的数据导出到Excel 数据表中的功能。

能够实现这个功能的方法很多,本文采用预先设置好Excel模板,然后再将数据导入到模板中的方法。

这种方法灵活、方便,可以制作较复杂的Excel数据表,创建Excel对象的过程是在后台运行,避免用户在自动化运行期间干预Excel,而出现误操作。

主要代码的实现:4.1 打开连接在前面的For m中添加Excel A pp licati on、Excel2 Workbook和Excel W orksheet三个控件。

然后打开Excel应用程序,创建一个工作薄,如果打开工作薄失败,就断开与Excel的连接,然后关闭Excel应用程序。

源程序如下:varwkbk:_Workbook;//用于表示打开的工作薄,与excel应用连接beginOpenD ial og1.I nitial D ir:=extractFile D ir(para m str(0));//Excel 文件打开的初始路径if not(OpenD ial og1.Execute)thenraise excep ti on.Create(‘没有选择EXCE L文件!’);try//调用Connect方法,连接ExcelExcel A pp licati on1.Connect;Excep tshowmessage(‘M icr os oft Excel启动失败!’);exit;end;Excel A pp licati on1.V isible[0]:=false;//设置EXCEL不可见Excel A pp licati on1.Workbooks.Add(EPara m,0);//打开选择的Excel文件//Excel W orkbook1与Excel A pp licati on1建立连接Excel W orkbook1.ConnectT o(Excel A pp licati on1.Active Work2 book);//Excel W orksheet1与Excel W orkbook1建立连接Excel W orksheet1.ConnectT o(Excel W orkbook1.Worksheets[1]as _worksheet);end;4.2 Excel数据表的数据导入到S QL Server数据库取出Excel数据表的每一行信息插入到已建好的,名为“CS BY”的S QL Server数据表中。

为了保护数据的完整性,利用TS QLConnecti on的Start2 Transacti on方法激活一个独立的数据库事务,以确保在S QL Server数据表更新出现错误的时候,能够调用TS QLConnecti on的Rollback方法将S QL Server 数据表恢复到进行更新操作之前的状态。

源程序如下:vari:integer;aT D:TTransacti onDesc;//定义一个描述事务内容的参数Sheet,Te mpSht:variant;beginaT D.Transacti on I D:=1;//指定事务的I DaT D.Is olati onLevel:=xil READCOMM I TTED;//指定事务的级别95第35卷(2007)第3期 计算机与数字工程 TempSht:=Excel A pp licati on1.Sheets;TempSht.ite m[1].Activate;Sheet:=Te mpSht.ite m[1].U sedRange;For i:=1t o Sheet.Rows.Count dobeginSi m p le DataSet1.insert;Si m p le DataSet1.FieldBy Na me(‘cs1’).A sI nteger:=Excel W ork2 sheet1.Cells.Ite m[i,1];……Si m p le DataSet1.edit;tryS QLConnecti on1.StartTransacti on(aT D);//开始这个事务Si m p le DataSet1.App ly Updates(0);S QLConnecti m it(aT D);excep tS QLConnecti on1.Rollback(aT D);//若发生错误,将数据回滚end;end;end;4.3 S QL Server数据库中的数据导出到Excel数据表中向预设的Excel模板中写入数据,就是利用Excel W orksheet的Cells属性添加数值的过程。

相关文档
最新文档