ASP.NET数据访问

ASP.NET中包含了一些数据访问的工具,通过这些工具,你可以更好的设计网站,让你的用户在访问网站的时候,能够更容易的与数据库进行交互。
在数据访问(Data access)中,最主要的也是首先要做的就是应用程序与数据源的连接。下面我们对一些数据访问的方法集中加以讨论。
使用ODBC.NET
ODBC(Open Database Connectivity,开放数据库连接)是一个被广泛接受的数据库访问API(application programming interface,应用程序接口)。它基于来自数据库API领域的X/Open和ISO/IEC调用级接口(CLI,Call-Level Interface)规范,并且使用SQL(Structured Query Language)作为其数据库访问语言。
ODBC被设计具备最大的互用性,也就是说,可以使用相同的代码、通过一个应用程序来访问不同的数据库操作系统(DBMS,database management systems)。数据库应用程序调用ODBC接口中的函数,而这些函数在数据库专用模块中被称为“驱动器”(drivers)。由于驱动器在运行时刻被装载,所以如果用户需要访问新的DBMS的时候,就需要添加一个新的驱动器才行,但是装载之后不需要重新编译和连接应用程序。
ODBC框架由以下四个部分组成:
● 应用程序(Application)。执行处理,调用ODBC函数来提交SQL语句,并且得到结果。
● 驱动器管理器(Driver Manager)。为应用程序装载和卸载驱动器。处理ODBC函数调用或者把它们传递给驱动器。
● 驱动器(Driver)。处理ODBC函数调用,把SQL请求提交到指定的数据源,并且把结果返回给应用程序。如果必要的话,驱动器会修改应用程序的请求,以便该请求从语义上可以被相应的DBMS识别。
● 数据源(Data source)。包括用户想要访问的数据和它对应的操作系统、DBMS、用于访问DBMS的网络平台(如果有的话)。
下图表示上述四个部分之间的关系。
          
                 图4.1 ODBC各组件之间的关系
一旦安装成功,就可以使用一个全新的命名空间(namespace)——System.Data.Odbc。它被添加到全局汇编缓存器(Global Assembly Cache)中,作为.NET框架(.NET framework)的本地部分发挥作用。
System.Data.Odbc命名空间中包括:OdbcConnection, OdbcDataAdapter, OdbcCommand, OdbcDataReader, OdbcParameter, OdbcTransaction ,OdbcCommandBuilder等类。
下面我们开始介绍如何在数据访问中使用ODBC。
使用ODBC DSN(Data Source Name,数据源名)需要如下两步:
● 创建DSN。
创建DSN需要使用“ODBC数据源管理器”(ODBC Data Source Administrator)。你可以在“控制面板”(Control Panel)或“管理工具”(Administrative Tools)中找到它。界面如下图所示。
           
                  图4.2 ODBC数据源设置界面
在使用ASP.NET的时候,要确保你创建的是“系统DSN”(SYSTEM DSN),而不是“用户DSN”(USER DSN)。
在上述界面中,可以添加( )、删除( )和修改( )DSN。点击Add按钮,在下图的界面中选择一个合适的“驱动器”(driver)。
           
                 图4.3 从驱动器列表中选择合适的驱动器
选中驱动器之后,点击“完成”( )按钮,开始设置“数据源”的具体属性。界面如图4.4所示。
           
                   图4.4 设置数据源属性
在图中输入DSN(Data Source Name)和“描述”(Description)之后,选择( )、创建( )、修复( )或压缩( )所选的数据库。
设定好之后,点击“确定”( )完成DSN的设置。结果如图4.5所示。
           
                       图4.5 DSN设置完成
注:由于在图4.3的界面中,我们选择了用于ACCESS数据库的驱动器,所以在图4.4的界面中就只能针对ACCESS数据库进行相关设置。如果读者想要使用其他数据库,可以在图4.3的界面中选择相应的驱动器。
设置好了DSN,接下来就可以对数据源进行访问了。
● 使用连接语句进行连接。
oConn.Open "DSN=goodDay;" & _
          "Uid=;" & _
          "Pwd=;

使用.NET Jet Driver
我们通常所说的Jet Driver,又叫桌面ODBC数据库驱动器(Desktop Database Drivers for ODBC)。在Jet数据库引擎(Jet database engine)3.5版本中,引入了Internet同步化(Internet synchronization)功能,用来满足在国际互联网(Internet)或内部互联网(intranet)上使用重复数据库中数据的需要。随着Jet数据库引擎4.0版本的发布,很多新的特性被引入到了Internet同步化(Internet synchronization)中,其中主要有:
● 支持HTTP1.1协议,该协议去除了FTP对于同步化的依赖。
● 减少了传输时间。
● 为Internet复制使用的新的、叫做“匿名者(anonymous)”的复制品类型。
● 附加的、多个用于控制同步化超时的注册码(registry keys)。
Internet同步化(Internet synchronization)也可用于局域网(LAN,local area network,有时候也叫intranet),进行标准的间接同步化(indirect synchronization)。Internet同步化(Internet synchronization)不同于间接同步化,不需要在客户端装备同步化装置以实现对数据库的同步化操作。
要在Internet上实现同步化,客户端计算机必须建立一个到Internet或intranet服务器上的HTTP连接。根据客户端计算机与服务器间的配置情况,建立与服务器的连接将会在客户端显示一个登录对话框。此时,只有当客户端计算机输入了正确的用户名和密码之后,同步化才会启动。一旦连接成功,客户端计算机就会创建一个消息文件,其中记录了上次同步化后数据库“复制品”(replica)中发生的变化,并且将该消息文件上传至Internet或intranet服务器上的“穿梭仓”(drop box)中。
Internet同步化把这些变化应用到了基本的“复制品”(base replica)中,除非你使用Visual Basic?的应用程序代码指定了一个不同于基本“复制品”的其它“复制品”。
这些变化被应用到基本的“复制品”(base replica)中后,Internet同步化就会创建一个消息文件,包含来自于基本“复制品”(或程序代码中指定的“复制品”)的数据库变化,并且把该消息文件上传至Internet或intranet服务器上的“穿梭仓”(drop box)中。Internet服务器把消息文件的名称和位置送回给客户端计算机,而客户端计算机会把消息文件中的内容应用到客户端数据库“复制品”中。
如4.2中提到的,ODBC是一个使用SQL (Structured Query Language)作为数据库访问语言的API。通过应用程序中的一段同样的ODBC源代码,你就可以访问很多DBMS(database management system)。使用“Microsoft ODBC桌面数据库驱动器”(Microsoft ODBC Desktop Database Driver),在可以使用ODBC的应用程序中,用户可以通过ODBC接口对桌面数据库完成打开、查询和修改等操作。
“Microsoft ODBC桌面数据库驱动器”是一套基于Microsoft Jet的ODBC驱动器(有关ODBC驱动器的知识请参见4.2)。需要说明的是,在“Microsoft ODBC桌面数据库驱动器”2.0版中包括16位和32位的驱动器,3.0及以后的版本中仅包括运行于Windows 95及以后版本、Windows NT Workstation 或 Server version 4.0、Windows 2000 Professional、Windows 2000 Server等操作系统上的32位驱动器。这些驱动器提供对下列数据源的访问:
● Microsoft Access
● dBASE
● Microsoft Excel
● Paradox
● 文本(Text )
对其他数据源的访问,如Lotus 1-2-3, Microsoft Exchange和HTML,需要安装ISAM (IISAM)驱动器。

通过Microsoft Jet 的OLE 数据库提供者(OLE DB Provider for Microsoft Jet),ADO可以访问Microsoft Jet数据库。
● 连接字符串参数(Connection String Parameters)
要连接到相应的提供者(Provider),需要将ConnectionString 的Provider参数值设为:
Microsoft.Jet.OLEDB.4.0
● 典型的连接字符串
针对OLE 数据库提供者的典型连接字符串如下:
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=databaseName;
User ID=userName;Password=userPassword;"
这个字符串包括以下关键字(keywords):


表4.1 OLE 数据库提供者典型连接字符串关键字说明

除了使用OLE 数据库提供者连接数据库之外,还可以使用ODBC驱动器访问数据库。这里主要针对与数据库的连接举例说明。(一旦实现了与数据源的连接,余下的工作——如数据源中数据的查询、修改等操作可参见“第三章 ASP.NET数据库访问-ADO.NET”中的内容。)
● 使用ODBC驱动器建立与AS/400数据源的连接:
oConn.Open "Driver={Client Access ODBC Driver (32-bit)};" & _
          "System=myAS400;" & _
          "Uid=myUsername;" & _
          "Pwd=myPassword;"
● 使用ODBC驱动器建立与Access数据源的连接:
oConn.Open "Driver={Microsoft Access Driver (*.mdb)};" & _
          "Dbq=c:/somepath/mydb.mdb;" & _
          "Uid=Admin;" & _
          "Pwd=;"
如果是系统数据库,那么可以这样做:
oConn.Open "Driver={Microsoft Access Driver (*.mdb)};" & _
          "Dbq=c:/somepath/mydb.mdb;" & _
          "SystemDB=c:/somepath/mydb.mdw;", _
          "admin", ""
如果数据源是网络数据库:
oConn.Open "Driver={Microsoft Access Driver (*.mdb)};" & _
          "Dbq=//myServer/myShare/myPath/myDb.mdb;"

● 使用ODBC驱动器建立与dBASE数据源的连接:
oConn.Open "Driver={Microsoft dBASE Driver (*.dbf)};" & _
         "DriverID=277;" & _
         "Dbq=c:/somepath;"
注意:在SQL语句中指定所要访问的数据表名。例如(使用VB语句):
     oRs.Open "Select * From user.dbf", oConn, , ,adCmdText
注意:MDAC(Microsoft Data Access Components,Microsoft数据访问组件) 2.1 (或更新的版本)需要BDE (Borland Database Engine,Borland 数据库引擎)来升级dBase DBF文件.
● 使用ODBC驱动器建立与Excel数据源的连接:
oConn.Open "Driver={Microsoft Excel Driver (*.xls)};" & _
          "DriverId=790;" & _
          "Dbq=c:/somepath/mySpreadsheet.xls;" & _
          "DefaultDir=c:/somepath;"
● 使用ODBC驱动器建立与MySQL(通过MyODBC)数据源的连接:
连接本地数据库
oConn.Open "Driver={mySQL};" & _
          "Server=MyServerName;" & _
          "Option=16834;" & _
          "Database=mydb;"
连接远程数据库
oConn.Open "Driver={mySQL};" & _
          "Server=db1.database.com;" & _
          "Port=3306;" & _
          "Option=131072;" & _
          "Stmt=;" & _
          "Database=mydb;" & _
          "Uid=myUsername;" & _
          "Pwd=myPassword;"

● 使用ODBC驱动器建立与Oracle数据源的连接:
使用来自Microsoft公司的当前版本Oracle ODBC驱动器
oConn.Open "Driver={Microsoft ODBC for Oracle};" & _
          "Server=OracleServer.world;" & _
          "Uid=myUsername;" & _
          "Pwd=myPassword;"
使用来自Microsoft公司的旧版本Oracle ODBC驱动器
oConn.Open "Driver={Microsoft ODBC Driver for Oracle};" & _
          "ConnectString=OracleServer.world;" & _
          "Uid=myUsername;" & _
          "Pwd=myPassword;"

● 使用ODBC驱动器建立与Paradox数据源的连接:
oConn.Open "Driver={Microsoft Paradox Driver (*.db)};" & _
          "DriverID=538;" & _
          "Fil=Paradox 5.X;" & _
          "DefaultDir=c:/dbpath/;" & _
          "Dbq=c:/dbpath/;" & _
          "CollatingSequence=ASCII;"
注意: MDAC(Microsoft Data Access Components,Microsoft数据访问组件) 2.1 (或更新的版本)需要BDE (Borland Database Engine,Borland 数据库引擎)来升级Paradox ISAM fDBF文件.
● 使用ODBC驱动器建立与SQL Server数据源的连接:
使用标准安全性:
oConn.Open "Driver={SQL Server};" & _
          "Server=MyServerName;" & _
         "Database=myDatabaseName;" & _
         "Uid=myUsername;" & _
          "Pwd=myPassword;"
使用信任的连接安全性(Trusted Connection security):
oConn.Open "Driver={SQL Server};" & _
          "Server=MyServerName;" & _
          "Database=myDatabaseName;" & _
          "Uid=;" & _
          "Pwd=;"

oConn.Open "Driver={SQL Server};" & _
          "Server=MyServerName;" & _
          "Database=myDatabaseName;" & _
          "Trusted_Connection=yes;"
提示输入用户名和密码:
oConn.Properties("Prompt") = adPromptAlways
oConn.Open "Driver={SQL Server};" & _
          "Server=MyServerName;" & _
          "DataBase=myDatabaseName;"
● 使用ODBC驱动器建立与Sybase数据源的连接:
使用Sybase System 11 ODBC驱动器:
oConn.Open "Driver={SYBASE SYSTEM 11};" & _
          "Srvr=myServerName;" & _
         "Uid=myUsername;" & _
          "Pwd=myPassword;"
使用Intersolv 3.10 Sybase ODBC驱动器:
oConn.Open "Driver={INTERSOLV 3.10 32-BIT Sybase};" & _
          "Srvr=myServerName;" & _
         "Uid=myUsername;" & _
          "Pwd=myPassword;"
● 使用ODBC驱动器建立与Sybase SQL Anywhere数据源的连接:
oConn.Open "ODBC; Driver=Sybase SQL Anywhere 5.0;" & _
          "DefaultDir=c:/dbpath/;" & _
          "Dbf=c:/sqlany50/mydb.db;" & _
         "Uid=myUsername;" & _
          "Pwd=myPassword;"
          "Dsn="""";"
注意:在连接字符串中一定要保留DSN标签,即使是个空字符串(如代码中所示)。因为它是必备的!如果不这样设置,将会导致-7778错误。
● 使用ODBC驱动器建立与Teradata数据源的连接:
oConn.Open "Provider=Teradata;" & _
          "DBCName=MyDbcName;" & _
          "Database=MyDatabaseName;" & _
          "Uid=myUsername;" & _
          "Pwd=myPassword;"
● 使用ODBC驱动器建立与Teradata数据源的连接:
oConn.Open "Driver={Microsoft Text Driver (*.txt; *.csv)};" & _
          "Dbq=c:/somepath/;" & _
          "Extensions=asc,csv,tab,txt;" & _
          "Persist Security Info=False"
注意:在SQL语句中指定所要访问的数据表名。例如(使用VB语句):
oRs.Open "Select * From customer.csv", _
        oConn, adOpenStatic, adLockReadOnly, adCmdText
● 使用ODBC驱动器建立与Teradata数据源的连接:
使用数据库容器:
oConn.Open "Driver={Microsoft Visual FoxPro Driver};" & _
          "SourceType=DBC;" & _
          "SourceDB=c:/somepath/mySourceDb.dbc;" & _
          "Exclusive=No;"
不使用数据库容器(使用自由表):
oConn.Open "Driver={Microsoft Visual FoxPro Driver};" & _
          "SourceType=DBF;" & _
          "SourceDB=c:/somepath/mySourceDbFolder;" & _
          "Exclusive=No;"
访问mysql
要访问mysql数据库,需要以下组件:
● mysql-3.23.32-win(这个是最新版的,用于创建mysql数据库)
● myodbc-2.50.36-dll(这个是最重要的,MYSQL ODBC的驱动程序,可以到www.mysql.com下载)
对mysql 数据库的访问,需要如下步骤:
● 安装MYSQL ODBD的驱动程序
将下载的myodbd-2.50.46-dll文件复制到windows/system目录下(windows2000是winnt/system32)
然后建立一新文件,扩展名为reg(注册表文件),将以下内容复制到该文件中。
REGEDIT4
[HKEY_LOCAL_MACHINE/SOFTWARE/ODBC/ODBCINST.INI/myodbc driver]
"UsageCount"=dword:00000002
"Driver"="C://WINNT//System//myodbc.dll"
"Setup"="C://WINNT//System//myodbc.dll"
"SQLLevel"="1"
"FileUsage"="0"
"DriverODBCVer"="02.50"
"ConnectFunctions"="YYY"
"APILevel"="1"
"CpTimeout"="120"
[HKEY_LOCAL_MACHINE/SOFTWARE/ODBC/ODBCINST.INI/ODBC Drivers]
"myodbc driver"="installed"
保存后双击该文件,将上面代码注册到WINDOWS注册表中。
注意:上述内容适合在windows2000系列系统中使用。如果安装在windows98中,则Driver和Setup主键的值要做相应改变,如下:
"Driver"="C://WINDOWS//System//myodbc.dll"
"Setup"="C://WINDOWS//System//myodbc.dll"
  如果成功,在ODBC数据源的驱动程序里将看到myodbc driver这一项!
● 建立连接
连接MYSQL数据库时,可以通过4.2文中说到的ODBC DSN或者4.3中说到的ODBC驱动器(详细内容见上文)。
访问Oracle
通过使用Oracle的Microsoft? ODBC驱动器(关于ODBC驱动器的知识请参见4.2),可以使应用程序得以连接到Oracle数据库。Oracle的ODBC驱动器支持对PL/SQL包、XA/DTC集成的访问。
注意:关于PL/SQL包和XA/DTC集成的概念请参见相关的Oracle参考书。
Oracle RDBMS(关系数据库管理系统)是一个多用户的关系型数据库管理系统,可以运行在多种工作站和微型计算机操作系统上。使用Microsoft Windows系列操作系统的IBM兼容机可以通过网络与Oracle数据库服务器进行交互。支持这种交互的网络包括:Microsoft LAN管理器、NetWare、VINES、DECnet以及其他支持TCP/IP协议的网络。
Oracle的ODBC驱动器使得应用程序可以通过ODBC接口对Oracle数据库进行数据访问。驱动器可以访问本地的Oracle数据库,或者使用SQL*Net通过网络与远程的数据库进行交互。下图(图4.6)展示了驱动器的结构:
                  
          图4.6 Oracle的ODBC驱动器应用结构示意图
要访问Oracle数据,需要安装下列组件:
● Oracle的ODBC驱动器
● Oracle RDBMS数据库
● Oracle客户端软件

对于远程连接而言,需要:
● 一个网络,上面连有运行着ODBC驱动器的计算机,以及运行着Oracle数据库的计算机。
● 该网络必须支持SQL*Net连接。

对Oracle数据库的连接,可以采用如下几种方式:
● 使用ODBC DSN。
详细配置情况参见4.2中的叙述。需要注意的是,选择“Microsoft ODBC for Oracle”驱动器,如下图(图4.7)所示。设定DSN为“goodDay“。
                 
                         图4.7 通过ODBC数据源访问Oracle数据库
然后使用如下语句建立连接。
oConn.Open "DSN=goodDay;" & _
          "Uid=;" & _
          "Pwd=;


● 使用ODBC驱动器连接Oracle数据库
具体的连接字符串如下:
oConn.Open "Driver={Microsoft ODBC for Oracle};" & _
          "Server=OracleServer.world;" & _
          "Uid=myUsername;" & _
          "Pwd=myPassword;"
● 使用Oracle的OLE数据库提供者(OLE DB Provider)连接Oracle数据库
来自Microsoft公司的OLE数据库提供者
oConn.Open "Provider=msdaora;" & _
          "Data Source=MyOracleDB;" & _
          "User Id=myUsername;" & _
          "Password=myPassword;"
来自Oracle公司的OLE数据库提供者
oConn.Open "Provider=OraOLEDB.Oracle;" & _
          "Data Source=MyOracleDB;" & _
          "User Id=myUsername;" & _
          "Password=myPassword;"
● 通过“信任的连接”(Trusted Connection)连接Oracle数据库
oConn.Open "Provider=OraOLEDB.Oracle;" & _
          "Data Source=MyOracleDB;" & _
          "User Id=/;" & _
          "Password=;"

oConn.Open "Provider=OraOLEDB.Oracle;" & _
          "Data Source=MyOracleDB;" & _
          "OSAuthent=1;" 
注意:这里的“Data Source” 必须与使用中设定的Net8名称保持一直。举例来说,对于本地命名而言,它应该是tnsnames.ora文件中的别名;对于Oracle命名,它应该是Net8服务的名称。
访问Excel
Excel是Microsoft公司的Office套件中的一种软件,他主要用来处理电子表格。Excel以界面友好、处理数据迅速等优点获得广大办公人员的欢迎。所以很多文档就以Excel的形式保存了下来。对于程序设计人员,在程序设计中,我们往往要访问Excel文件来获得数据。但由于Excel文件不是标准数据库,所以用程序语言来访问它就比较困难。
难归难,因为我们有了ASP.NET,也就没什么难的了!下面介绍怎么做。
要访问Excel ,需要下列组件:
● .Net Framework SDK
● Microsoft Access Data Component 2.6(MADC2.6)
当然了,操作系统最好是Windows 2000系列或更新版本。
配置好环境之后,使用如下代码,我们就可以不使用ODBC建立与Excel文件的连接,并获取其中数据。(程序使用VB语言编写)
Dim myOleDbConnection As OleDbConnection = New
   OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;" & _
   "Data Source=c:/test.xls;" & _
   "Extended Properties=""Excel 8.0;""")
Dim myOleDbCommand As OleDbCommand = New OleDbCommand("SELECT *
   FROM [Sheet1$]",myOleDbConnection) '如果你想读出Sheet2的内容
   ,把Sheet1$改成Sheet2$即可
Dim myData As OledbDataAdapter= New
   OledbDataAdapter(myOleDbCommand)
说明:
● 程序中假定我们要访问的文件路径为:c:/test.xls。如果要访问其他位置的Excel文件,只需要做相应改动就可以。
● 我们需要引入System.Data.Oledb命名空间,才可以完成上述操作。
● 在System.Data.Oledb命名空间中,OleDbConnection对象主要是提供连接方式。 OleDbCommand对象提供对目标的具体操作方法。OledbDataAdapter对象是对对象进行不同操作后的返回数据集。
上文中对Excel文件的访问做了一个比较全面的描述,下面我们专门针对与Excel文件的连接加以说明。
可以通过如下方式实现与Excel文件建立连接。
● 使用针对Excel的ODBC驱动器
oConn.Open "Driver={Microsoft Excel Driver (*.xls)};" & _
          "DriverId=790;" & _
          "Dbq=c:/somepath/mySpreadsheet.xls;" & _
          "DefaultDir=c:/somepath;"
● 使用OLE DB Provider for Microsoft Jet
oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
          "Data Source=c:/somepath/myExcelSpreadsheet.xls;" & _
          "Extended Properties=""Excel 8.0;HDR=Yes;"";"
说明:其中Data Source指定Excel文件的完整路径,Extended Properties指定一些附加属性,如Excel版本,和HDR值。其中,HDR=Yes表示在表格的区域内存在一个标题行(通常为第一行),所以OLE DB Provider就不会选择第一行的内容。如果HDR=No,OLE DB Provider就会把全部所选的内容填充至记录集(recordset)中。
● 使用ODBC数据源
首先创建ODBC DSN(具体步骤和方法参见4.2)。数据源驱动器选择“Microsoft Excel Driver“(如图4.8所示)。设定DSN为“goodDay“。
                
                      图4.8 创建针对Excel文件的ODBC数据源
然后使用如下语句建立连接。
oConn.Open "DSN=goodDay;" & _
          "Uid=;" & _
          "Pwd=;

作为一个补充内容,下面一段用VB.NET实现的类可以将DataSet中的数据导出至Excel文件中。
Imports System
Imports System.Text
Namespace toExcel
'功能:将asp.net中DataGrid导出至Excel文件中。
'Mountains改进:1、支持中文 2、隐藏列不显示
Public Class DataGridToCSV
Public Function GenerateFile(ByRef Page As System.Web.UI.Page, ByVal MyDataGrid As System.Web.UI.WebControls.DataGrid, ByVal FileName As String) As String
Dim resp As HttpResponse
Dim colCount As Integer = MyDataGrid.Columns.Count - 1
resp = Page.Response
resp.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312") '解决中文乱码之关键
'resp.Charset = "utf-8"
'resp.AddFileDependency(FileName)
'resp.ContentType = "Text/HTML"
'resp.AppendHeader("Content-Type", "text/html; charset=gb2312")
resp.AppendHeader("Content-Disposition", "attachment;filename=" + FileName) '此行代码可将文件做成下载文件
Dim colHeaders As String = ""
Dim strItems As StringBuilder = New StringBuilder()
Dim myCol As DataGridColumn
Dim i As Integer
For i = 0 To colCount
myCol = MyDataGrid.Columns(i)
If myCol.Visible = True Then
colHeaders = colHeaders & myCol.HeaderText.ToString & ","
End If
Next
If colHeaders.Length > 0 Then
colHeaders = colHeaders.Substring(0, colHeaders.LastIndexOf(","))
End If
colHeaders = colHeaders & Chr(13) & Chr(10)
resp.Write(colHeaders)
Dim colRow As String
Dim item As DataGridItem
For Each item In MyDataGrid.Items
resp.Write(FormatExportRow(colCount, item, MyDataGrid))
Next item
resp.End()
End Function

Private Function FormatExportRow(ByVal colCount As Integer, ByVal Item As DataGridItem, ByVal MyDataGrid As System.Web.UI.WebControls.DataGrid) As String
Dim strItem As String
Dim i As Integer
For i = 0 To colCount
If MyDataGrid.Columns(i).Visible = True Then
If Item.Cells(i).Text Is System.DBNull.Value Then
Item.Cells(i).Text = ""
End If
If i = colCount Then
strItem += Item.Cells(i).Text.ToString & Chr(13) & Chr(10)
Else
strItem += Item.Cells(i).Text.ToString & ","
End If
End If
Next
strItem = Replace(strItem, " ", " ")
Return strItem
End Function

End Class
End Namespace

访问Txt文件
由于文本文件(.txt)是一种比较基本的文件类型,因此对这种文件的访问方法也就比较多,下面针对几种比较常用的方法加以叙述。
● 使用ODBC数据源。
首先创建ODBC DSN(具体步骤和方法参见4.2)。数据源驱动器选择“Microsoft Text Driver“(如图4.9所示)。设定DSN为“goodDay“。
                        
                         图4.9 创建针对文本文件的ODBC数据源
然后使用如下语句建立连接。
oConn.Open "DSN=goodDay;" & _
          "Uid=;" & _
          "Pwd=;
● 使用针对文本文件的ODBC驱动器
oConn.Open "Driver={Microsoft Text Driver (*.txt; *.csv)};" & _
          "Dbq=c:/somepath/;" & _
          "Extensions=asc,csv,tab,txt;" & _
          "Persist Security Info=False"
注意:在SQL语句中指定文件名。
● 使用OLE DB Provider for Microsoft Jet
oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
          "Data Source=c:/somepath/;" & _
          "Extended Properties=""text;HDR=Yes;FMT=Delimited;"";"
' 然后从实际的文件中查询数据
oRs.Open "Select * From MyTextFile.txt", oConn, adOpenStatic, adLockReadOnly, adCmdText
● 使用System.IO名称空间
创建一个文本文件(c:/goodDay.txt)并写入一段文本。
"声明流书写对象
Dim strwriterobj As StreamWriter
" 创建文本文件,分配textfile对象
strwriterobj= File.CreateText("c:/goodDay.txt" )
" 写入内容
strwriterobj.WriteLine( "Welcome to wonderfull world of ASP.NET Programming" ) "
完成操作,关闭流对象
strwriterobj.Close
从刚才创建的文件中读取文本。
" 创建流读取对象
Dim streamreaderobj As StreamReader
" 声明变量,以存放从文件中读取的内容
Dim filecont As String
" 打开文本文件,分配给流读取对象
streamreaderobj = File.OpenText( " c:/goodDay.txt " )
" 逐行读取文件内容
Do
filecont = streamreaderobj.ReadLine()
Response.Write( filecont & "<br>" )
Loop Until filecont = ""
" 完成读取操作后,关闭流读取对象
streamreaderobj.Close
删除文件
File.Delete("c:aspnet.txt" )
小结
在这一章里,我们比较深入的了解了ASP.NET中对一些常用数据源的访问方法,主要是针对不同数据源的连接进行了比较详细的描述。但由于篇幅所限,很多内容都只能浅尝辄止,如果读者想知道更多的内容,请参见Microsoft Visual Studio.NET中的Microsoft Visual Studio.NET documentation,其中对ASP.NET的数据访问有很详细而且很专业的描述。
至于本章中的程序代码,都是经过严格调试的代码,使用VB.NET编写而成。读者如果想要使用其他.NET语言,如C#等,可以参考一下Microsoft Visual Studio.NET中的联机帮助系统,将相关的代码进行相应的替换即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值