河南新华电脑学院
欢迎 游客 , 注册 | 登录 | 会员 | 界面 | 简洁版本 | 在线 | 帮助
河南新华电脑学院

发表新主题 回复该主题
本主题被查看749次, 共10个帖子, 1页, 当前为第1页     选择页数: 1      跳转到第   上一主题   下一主题
标题: System.Data.OleDb.OleDbDataAdapter
注册会员
UID: 1049
来自:
精华: 0
积分: 79
帖子: 79
注册: 2008-2-27 7:51:27
状态: 离线
威望: 0
金钱: 9.25 元
只看楼主 2008-03-12 07:11
System.Data.OleDb.OleDbDataAdapter
System.Data.OleDb.OleDbDataAdapter与System.Data.OleDb.OleDbDataReader的区别是什么?
System.Data.OleDb.OleDbDataAdapter,可以通过它直接与DataSet建立联系,并操作数据源,功能相对强大,但比较消耗系统资源;
    System.Data.OleDb.OleDbDataReader呢,有点儿像ADO中的那个只读向前的记录集,它常用在只需要依次读取并显示数据的场合。OleDbDataReader能实现的功能,OleDbDataAdapter都能实现,但有些功能,却只有OleDbDataAdapter才能实现。不过,它耗用的系统资源比System.Data.OleDb.OleDbDataAdapter少。
#1  
注册会员
UID: 1049
来自:
精华: 0
积分: 79
帖子: 79
注册: 2008-2-27 7:51:27
状态: 离线
威望: 0
金钱: 9.25 元
只看楼主 2008-03-12 07:12
Variant总能找到与之相匹配的数据类型吗?
类  型    描  述
Empty    Variable 没有被初始化,它是数字的话,它的值就为0,如果它是字符串,那么它的值就为1
Null    Variant  表示了一个无效的数据类型
Boolean    表示  True 或 False
Byte    表示范围为 0 到 255的数字
Integer    表示范围为  -32,768  到  32,767的数字
Currency    -922,337,203,685,477.5808 到 922,337,203,685,477.5807
Long    表示范围为  -2,147,483,648  到  2,147,483,647  的数字
Single    表示范围为 -3.402823E38  到  -1.401298E-45 (负数); 1.401298E-45 to 3.402823E38 (正数)单精度 ,浮点数字
Double    表示范围为  -1.79769313486232E308 to -4.94065645841247E-324 (负数); 4.94065645841247E-324 to 1.79769313486232E308 (正数)双精度 ,浮点数字
Date (Time)    表示时间在January 1, 100 到 December 31, 9999  之间
String    表示字符串
Object    表示一个对象
Error    表示一个错误信息数字
#2  
注册会员
UID: 1049
来自:
精华: 0
积分: 79
帖子: 79
注册: 2008-2-27 7:51:27
状态: 离线
威望: 0
金钱: 9.25 元
只看楼主 2008-03-12 07:13
不通过数据源名DSN也能访问Access数据库吗?
<%
    dim conn
    dim connstr
connstr="DBQ="+server.mappath("/suifengqiwu/mains/mydb/iloveu.mdb")+_
' 注意server.mappath不能使用诸如"../db/mymdb.mdb"的路径,须从根目录写下来
     "DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};" +_
     "DriverId=25;FIL=MS Access;ImplicitCommitSync=Yes;" +_
     "MaxBufferSize=512;MaxScanRows=8ageTimeout=5;" + _
     "SafeTransactions=0;Threads=3;UserCommitSync=Yes;"
      set conn=server.createobject("ADODB.CONNECTION")
      conn.open connstr
%>
#3  
注册会员
UID: 1049
来自:
精华: 0
积分: 79
帖子: 79
注册: 2008-2-27 7:51:27
状态: 离线
威望: 0
金钱: 9.25 元
只看楼主 2008-03-12 07:14
不用DSN也能连接EXCEL吗?
确实ASP提供了替代DSN的其他方法,甚至可以在运行时建立连接,看看下面的范例:
vXlFile = Request("XlBook")
vXlFilePath = Server.MapPath(vXlFile)
' 假定文件在当前目录
vConnString = "DRIVER={Microsoft Excel Driver (*.xls)};ReadOnly=1;DBQ=" & _
              vXlFilePath
' 读取文件名,转换为全路径并生成连接字符串
Set oConn = Server.CreateObject("ADODB.Connection")
oConn.Open vConnString
' 建立并打开连接
#4  
注册会员
UID: 1049
来自:
精华: 0
积分: 79
帖子: 79
注册: 2008-2-27 7:51:27
状态: 离线
威望: 0
金钱: 9.25 元
只看楼主 2008-03-12 07:15
不用Global.asa也能实现统计在线人数吗?
<%
sessionID = session.SessionID
timeout = 5
' 设置session保持的时间

Conn_String = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("count.mdb")
'Conn_String = "activeUser"
' 最好设置DSN = "activeuser",因为我们需要在所有的ASP脚本中包含这个文件

Set ConnCount =Server.CreateObject("ADODB.Connection")
ConnCount.Open Conn_String

aaa = dateadd("n", -timeout, now())
connCount.Execute ("delete * from count where postdate < #" & aaa & "#")
' 在超时后删除session

sql0 = "select sess from count where sess='" & sessionID & "'"
' 保持sessionID
set rscheck = connCount.Execute (sql0)
if rscheck.eof then
sql = "insert into count (sess,postdate) values('" & sessionID & "', '" & now() & "')"
connCount.Execute (sql)
end if
rscheck.close
set rscheck = nothing

sql2 = "select count(sess) from count"
' 计算sessionID
set rs = connCount.Execute (sql2)
count = rs(0)
rs.close
set rs = nothing

sql3 = "select * from count"
set rspredel = connCount.Execute (sql3)
do until rspredel.eof
xxx=DateDiff("n", rspredel("postdate"), Now())
if xxx > timeout then
count = count-1
end if
rspredel.movenext
loop
rspredel.close
set rspredel = nothing

connCount.Close
set connCount = nothing

if count = 0 then
count = 1
end if
%>
     
当前正有<%=count%>人在随风起舞流连忘返!
#5  
注册会员
UID: 1049
来自:
精华: 0
积分: 79
帖子: 79
注册: 2008-2-27 7:51:27
状态: 离线
威望: 0
金钱: 9.25 元
只看楼主 2008-03-12 07:16
不用加载Include文件也能生成选择列表吗?
像在下拉菜单中选择省、市这样的操作,我一直用ASP来创建生成列表函数,把它们保存在一个Include文件中,用的时候就加载。这样做确实有个不好处,就是每次生成一个选择列表时,服务器就必须加载整个Include文件,显得浪费系统。最近,我发现有的朋友开始使用存储过程来生成选择选择列表了。具体怎样做呢?

确实,通常我们使用Include文件来做这一切,这样,ASP需要额外的时间在服务器上加载并处理这些Include文件,每次生成一个选择列表时,都必须加载整个Include文件。
但我们也可以把这些函数放在存储过程了,让存储过程来生成选择清单。看看生成一个选择清单的记录的具体实现方法:
  首先,使用T-SQL的串联功能建立一个从记录集中生成选择清单的Select语句:
  Alter Procedure "getOptionListStates"
  As
  select (''
  + rtrim( FullName) + '')
  as OptionList from cities
  然后,执行getOptionListStates存储过程,就会生成如下记录:
  东港
  莒县
  五莲
  岚山
当然,我们还可以直接把选择列表放在数据库中去。
最后,修改存储过程,返回一个包含全部选择列表元素的单一变量,再将这一变量返回给HTML的Select语句即可。
这样做的另一个好处是,一旦建立了一个存储过程,就可以很方便地在不同的应用中进行调用,甚至是在不同服务器上的应用中进行调用,而Include文件要做到这一点就很难了。
#6  
注册会员
UID: 1049
来自:
精华: 0
积分: 79
帖子: 79
注册: 2008-2-27 7:51:27
状态: 离线
威望: 0
金钱: 9.25 元
只看楼主 2008-03-12 07:17
常用的数据库备份类型有哪些?
数据库备份有四种类型,分别应用于不同的场合,下面简要介绍一下。
1、完全备份
这是大多数人常用的方式,它可以备份整个数据库,包含用户表、系统表、索引、视图和存储过程等所有数据库对象。但它需要花费更多的时间和空间,所以,一般推荐一周做一次完全备份。
2、事务日志备份
事务日志是一个单独的文件,它记录数据库的改变,备份的时候只需要复制自上次备份以来对数据库所做的改变,所以只需要很少的时间。为了使数据库具有鲁棒性,推荐每小时甚至更频繁的备份事务日志。
3、差异备份
也叫增量备份。它是只备份数据库一部分的另一种方法,它不使用事务日志,相反,它使用整个数据库的一种新映象。它比最初的完全备份小,因为它只包含自上次完全备份以来所改变的数据库。它的优点是存储和恢复速度快。推荐每天做一次差异备份。
4、文件备份
数据库可以由硬盘上的许多文件构成。如果这个数据库非常大,并且一个晚上也不能将它备份完,那么可以使用文件备份每晚备份数据库的一部分。由于一般情况下数据库不会大到必须使用多个文件存储,所以这种备份不是很常用。
#7  
注册会员
UID: 1049
来自:
精华: 0
积分: 79
帖子: 79
注册: 2008-2-27 7:51:27
状态: 离线
威望: 0
金钱: 9.25 元
只看楼主 2008-03-12 07:18
常用的数据库访问方式是什么?
在ASP中可以通过三种方式访问数据库:
1、IDC(Internet Database Connector)方式;
2、ADO(ActiveX Data Objects)方式;
3、RDS(Remote Data Service)方式。
这三种访问方式对数据库的访问都是由Internet Information Server完成的。通过Web浏览器用HTTP协议向IIS(Internet信息服务器)发送请求,IIS执行对数据库的访问,并返回一个HTML格式的文档响应。下面分别说明:
1、IDC(Internet数据库接口)
IDC是一个传统的数据库查询工具,用来定义和执行数据库查询的SQL命令,并向浏览器返回一个指定数据格式的页面。使用IDC访问数据库最大的特点是简单,几乎不需要编程就能实现对数据库的访问。
IDC使用两种文件来控制如何访问数据库以及如何创建返回的Web页面:IDC (.idc)文件和HTML扩展(.htx)文件。.idc文件必须包括ODBC数据源(Datasource)、HTML扩展文件的文件名(Template)以及要执行的SQL语句(SQLStatement)。此外还有许多可选字段,可以根据需要选用。
.htx文件是带有用<%%>或<!--%%-->括起来的附加标记的HTML文档,IDC用这些标记将动态数据添加到文档中。在.htx文件中有六个关键字(begindetail、enddetail、if、else、endif和"%z"),用来控制数据库中的数据怎样和.htx文件中HTML格式进行合并。数据库列名说明HTML文档中什么数据被返回。
要执行IDC查询,通常的做法是在HTML文件中嵌入一个.idc文件的连接。例如,我们可用下面的HTML语句向Web服务器发出请求,要求执行idctest.idc文件:
<A HREF="http://LocalHost/idctest/idctest/idctest.idc">查询</A>
  当Web服务器接到请求后,就调用Httpodbc.dll(IDC),与一定的数据源相连并把SQL命令传给数据库。当SQL语句被执行后,IDC把返回的数据融入到.htx文件中。IDC再把这个文档返回给Web服务器,Web服务器再返回给浏览器。

2、ADO(ActiveX数据对象)
  ADO访问数据库,更像编写数据库应用程序。它把绝大部分的数据库操作封装在七个对象中,在ASP页面中编程调用这些对象执行相应的数据库操作。
ADO是ASP技术的核心之一,它集中体现了ASP技术丰富而灵活的数据库访问功能。ADO建立了基于Web方式访问数据库的脚本编写模型,不仅支持任何大型数据库的核心功能,而且支持许多数据库所专有的特性。
ADO使用本机数据源,通过ODBC访问数据库。这些数据库可以是关系型数据库、文本型数据库、层次型数据库或者任何支持ODBC的数据库。主要优点是易用、高速、占用内存和磁盘空间少,所以非常适合于作为服务器端的数据库访问技术。相对于访问数据库的CGI程序而言,它是多线程的,在出现大量并发请求时,也同样可以保持服务器的运行效率,并且通过连接池(Connection Pool)技术以及对数据库连接资源的完全控制,提供与远程数据库的高效连接与访问,同时它还支持事务处理(Transaction),以开发高效率、高可靠性的数据库应用程序。
  一般使用ADO访问数据库的ASP脚本程序应该使用Connection对象建立并管理与远程数据库的连接,用Command对象提供灵活的查询,用Recordset对象访问数据库查询所返回的结果。这三者是ADO的最核心的对象。
与IDC一样,运行该数据库访问脚本的通常做法是在HTML文件中嵌入一个.asp文件的连接。如,用HTML语句向Web服务器发出请求,要求执行intels.asp文件:
<A HREF="http://LocalHost/idctest/ado/intels.asp">查询</A>

    3、RDS(远程数据服务)
  RDS在IIS 4.0中,与ADO集成到一起,使用同样的编程模型,提供访问远程数据库的功能。ADO虽然能够提供非常强大的数据库访问功能,但是它不支持数据远程操作(Data Remoting)。它只能执行查询并返回数据库查询的结果,这种结果是静态的,服务器上的数据库与客户端看到的数据没有活的连接关系。如果用户端需要修改数据库,就必须构造修改数据的SQL语句,并执行相应的查询。而RDS支持数据远程操作。它不仅能执行查询并返回数据库查询结果,而且可以把服务器端的数据“搬到”用户端修改,并调用一个数据库更新命令,将用户端修改的数据写回数据库,象使用本地数据库一样。
RDS的底层是调用ADO来完成的,同样具有ADO的易用性,区别仅在于RDS需要与数据绑定控件一同使用,比如Sheridan的ActiveX DataBound Grid控件。正如ADO类似于VB中的RDO一样,RDS也类似于VB中的远程数据控件(RDC)。
RDS在ADO的基础上通过绑定的数据显示和操作控件,提供给客户端更强的数据表现力和远程数据操纵功能。可以说RDS是目前基于Web的最好的远程数据库访问方式。
#8  
注册会员
UID: 1049
来自:
精华: 0
积分: 79
帖子: 79
注册: 2008-2-27 7:51:27
状态: 离线
威望: 0
金钱: 9.25 元
只看楼主 2008-03-12 07:19
FileSystem对象常用的文件操作函数有哪些?
1、root
函数格式    root()
功能描述    返回一个路径串变量
应用代码    'sample string = c:\intels\jingcaichunfeng\'
Public Function root()
root = Request.ServerVariables("Appl_Physical_Path")
End Function

2、url
函数格式    url()
功能描述    返回一个URL串变量
应用代码    'sample string = [url]http://www.intels.net/filesys.asp'[/url]
Public Function url()
url ="http://"&Request.ServerVariables("Server_Name")
&Request.ServerVariables("Script_Name")
End Function

3、mkdir
函数格式    mkdir( DIrName )
功能描述    创建一个目录并返回信息
应用代码    Public Function mkdir( xVar )
Set Sys = Server.CreateObject("Scripting.FileSystemObject")
If Sys.FolderExists( xVar ) Then
  msg ="抱歉,该目录已存在! "
Else
  Sys.CreateFolder( xVar )
  msg ="恭喜,目录创建成功! "
End If
Set Sys = Nothing
mkdir = msg
End Function

4、rmdir
函数格式    rmdir( DirName )
功能描述    删除一个目录并返回信息
应用代码    Public Function rmdir( xVar )
Set Sys = Server.CreateObject("Scripting.FileSystemObject")
If Sys.FolderExists( xVar ) Then
  Sys.DeleteFolder( xVar )
  msg ="恭喜,目录删除成功!"
Else
  msg ="抱歉,该目录还未被创建! "
End If
Set Sys = Nothing
rmdir = msg
End Function

5、isdir
函数格式    isdir( DirName )
功能描述    检查一个目录是否存在并返回信息
应用代码    Public Function isdir( xVar )
Set Sys = Server.CreateObject("Scripting.FileSystemObject")
If Sys.FolderExists( xVar ) Then
  msg = True
Else
  msg = False
End If
Set Sys = Nothing
isdir = msg
End Function

6、cpdir
函数格式    cpdir( DirName, Destination, OverWrite )
功能描述    复制文件夹并返回信息
应用代码    Public Function cpdir( xVar, yVar, zVar )
Set Sys = Server.CreateObject("Scripting.FileSystemObject")
If Sys.FolderExists( xVar ) Then
  Sys.CopyFolder xVar, root&yVar, zVar
  msg ="恭喜,目录复制成功!"
Else
  msg ="抱歉,没有找到您想要的目录!"
End If
Set Sys = Nothing
cpdir = msg
End Function

7、mvdir
函数格式    mvdir( DirName, Destination )
功能描述    移动一个文件夹并返回信息
应用代码    Public Function mvdir( xVar, yVar )
Set Sys = Server.CreateObject("Scripting.FileSystemObject")
If Sys.FolderExists( xVar ) Then
  Sys.MoveFolder xVar, root&yVar
  msg ="恭喜,目录夹已移动!"
Else
  msg ="抱歉,没有找到您想要的目录!"
End If
Set Sys = Nothing
mvdir = msg
End Function

8、isfile
函数格式    isfile( FileName )
功能描述    检查文件是否存在并返回信息
应用代码    Public Function isfile( xVar )
Set Sys = Server.CreateObject("Scripting.FileSystemObject")
If Sys.FileExists( xVar ) Then
  msg = True
Else
  msg = False
End If
Set Sys = Nothing
isfile = msg
End Function

9、wfile
函数格式    wfile( FileName, OverWrite, String )
功能描述    写入串到一个文件并返回信息
应用代码    Public Function wfile( xVar, yVar, zVar )
Set Sys = Server.CreateObject("Scripting.FileSystemObject")
If yVar Then
  Set Txt = Sys.OpenTextFile( xVar, 2 )
  Txt.Write( zVar )
  Txt.Close
  msg ="恭喜,文件创建成功并保存!"
Else
  If Sys.FileExists( xVar ) Then
  msg ="抱歉,文件已经存在!"
  End If
Set Sys = Nothing
wfile = msg
End Function

10、rfile
函数格式    rfile( FileName )
功能描述    读取一个文件并返回信息
应用代码    Public Function rfile( xVar )
Set Sys = Server.CreateObject("Scripting.FileSystemObject")
If Sys.FileExists( xVar ) Then
  Set Txt = Sys.OpenTextFile( xVar, 1 )
  msg = Txt.ReadAll
  Txt.Close
Else
  msg ="抱歉,文件不存在!"
End If
Set Sys = Nothing
rfile = msg
End Function

11、afile
函数格式    afile( FileName, String )
功能描述    添加串到一个文件并返回信息
应用代码    Public Function afile( xVar, zVar )
Set Sys = Server.CreateObject("Scripting.FileSystemObject")
If Sys.FileExists( xVar ) Then
  Set Txt = Sys.OpenTextFile( xVar, 8 )
  Txt.Write( zVar )
  Txt.Close
  msg ="恭喜,文件添加成功并保存!"
Else
  msg ="抱歉,文件不存在!"
End If
Set Sys = Nothing
afile = msg
End Function

12、cpfile
函数格式    cpfile( FileName, Destination, OverWrite )
功能描述    复制一个文件并返回信息
应用代码    Public Function cpfile( xVar, yVar, zVar )
Set Sys = Server.CreateObject("Scripting.FileSystemObject")
If Sys.FileExists( xVar ) Then
  Sys.CopyFile xVar, root&yVar, zVar
  msg ="恭喜,文件复制成功!"
Else
  msg ="抱歉,文件复制失败!"
End If
Set Sys = Nothing
cpfile = msg
End Function

13、mvfile
函数格式    mvfile( FileName, Destination )
功能描述    移动一个文件并返回信息
应用代码    Public Function mvfile( xVar, yVar )
Set Sys = Server.CreateObject("Scripting.FileSystemObject")
If Sys.FileExists( xVar ) Then
  Sys.MoveFile xVar, root&yVar
    msg ="恭喜,文件移动成功!"
Else
  msg ="抱歉,文件移动失败!"
End If
Set Sys = Nothing
mvfile = msg
End Function

14、rmfile
函数格式    rmfile( FileName )
功能描述    删除一个文件并返回信息
应用代码    Public Function rmfile( xVar )
Set Sys = Server.CreateObject("Scripting.FileSystemObject")
If Sys.FileExists( xVar ) Then
  Sys.DeleteFile( xVar )
  msg ="恭喜,文件删除成功!"
Else
  msg ="抱歉,文件删除失败!"
End If
Set Sys = Nothing
rmfile = msg
End Function
#9  
注册会员
UID: 1049
来自:
精华: 0
积分: 79
帖子: 79
注册: 2008-2-27 7:51:27
状态: 离线
威望: 0
金钱: 9.25 元
只看楼主 2008-03-12 07:20
存贮查询与运行时查询孰优孰劣?
我在用 ASP 写一个数据库的应用的时候,总是被那些看起来好好的SQL语句执行起来产生的错误代码搞得头疼,请问有没有更好的解决办法啊?
  
有,我们建议你用存贮过程来代替运行时生成 SQL 语句执行查询任务。可以把查寻语句从你的代码中移出来,放在数据库中实现。一方面,减少了应用程序的复杂性,另一方面,如果你想改变查询内容,或者发现在查询中有一些问题,只需在数据库中更改就好了,而不必更动整个应用程序,工作量小,出错率低。
使用存贮查询不但好处多 , 而且在效率方面的提高是明显的。我们来看看这两者的差别:
  执行速度:存贮查询已经预先被数据库引擎优化并编译好了,所以快;运行时查询是在运行时被解释执行的,其速度远远慢于编译执行的速度。
改变难易度:存贮查询只要更改在保存数据库中的相应的查询语句就可以了,不必改动程序中的调用代码;运行时查询整个应用程序都要因为它的改动作一些相应的改动,以使得程序能够顺利运行,费事。
  灵活性:存贮查询只能通过参数调用,而参数调用也是一个比较麻烦的事;运行时查询可以用参数查询,或者嵌入变量查询等多种查询方式,灵活性很高。
维护:存贮查询只有一个查询语句存在于数据库中,使用查询时都是只对对这个查询语句的调用,便于维护;运行时查询对每一个查询任务都要单独的写出 SQL 语句来执行查询,维护相对难一些。
  阅读:存贮查询调用的存贮查询语句都很简短,也不必理会那些符号,容易阅读;运行时查询因为在语句中还包含了很多连接号,变量,及一些其它的字符,不容易阅读。
#10  
发表新主题 回复该主题
本主题被查看749次, 共10个帖子, 1页, 当前为第1页     选择页数: 1      跳转到第







现在的时间是 2008-10-13 01:58:09

版权所有 河南新华电脑学院  
          1.0.2642 (RC2)   Copyright © 2001-2008 Comsenz Inc.
Processed in 0.32 seconds