adodb.stream是做啥的

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了adodb.stream是做啥的相关的知识,希望对你有一定的参考价值。

adodb.stream是什么意思?如何使用??

我的ASP网站在本机测试时,后台管理说是要adodb.stream支持。当我在修改网站管理的内容后测试是没有改动。现在,我不能在后台管理对网站做任何改动,改了也没用。只能在源码里改动了。
看来是没有用到adodb.stream的感恩。怎么样做才能支持它??
在网站里加一个ASP文件?还是在电脑里设置??还是要修改什么??
谢谢各位!本人不太懂。

是不是和IIS也有关系?我删了几次又装了几次。用了不同的版本都没有用。怎么做才能让我的网站在本机上测试时所有功能都体现出来?就是说,改到的任何变动在IE里都能直接体现出来?
请不要复制那些无聊的别人的东西。我也能查到。
回答详细,明确些。谢谢@!能搞定问题的,可加分。多谢!
一楼的不要这么恶心好不好。我也会查到这些东西然后复制。这些有屁用。我又看不懂。晕。

关于Adodb.Stream 的使用说明

组件:"Adodb.Stream"
有下列方法:
Cancel 方法
使用方法如下
Object.Cancel
说明:取消执行挂起的异步 Execute 或 Open 方法的调用。
Close 方法
使用方法如下
Object.Close
:关闭对像
CopyTo 方法
使用方法如下
Object.CopyTo(destStream,[CharNumber])
说明:将对像的数据复制,destStream指向要复制的对像,CharNumber为可选参数,指要复制的字节数,不选为全部复制。
Flush 方法
使用方法如下
Object.Flush
说明:
LoadFromFile 方法
使用方法如下
Object.LoadFromFile(FileName)
说明:将FileName指定的文件装入对像中,参数FileName为指定的用户名。
Open 方法
使用方法如下
Object.Open(Source,[Mode],[Options],[UserName],[Password])
说明:打开对像,
参数说明:Sourece 对像源,可不指定
Mode 指定打开模式,可不指定,可选参数如下:
adModeRead =1
adModeReadWrite =3
adModeRecursive =4194304
adModeShareDenyNone =16
adModeShareDenyRead =4
adModeShareDenyWrite =8
adModeShareExclusive =12
adModeUnknown =0
adModeWrite =2
Options 指定打开的选项,可不指定,可选参数如下:
adOpenStreamAsync =1
adOpenStreamFromRecord =4
adOpenStreamUnspecified=-1
UserName 指定用户名,可不指定。
Password 指定用户名的密码
Read 方法
使用方法如下:
Object.Read(Numbytes)
说明:读取指定长度的二进制内容。
参数说明:Numbytes指定的要读取的找度,不指定则读取全部。

ReadText 方法
使用方法如下:
Object.ReadText(NumChars)
说明:读取指定长度的文本
参数说明:NumChars指定的要读取的找度,不指定则读取全部。

SaveToFile 方法
使用方法如下:
Object.SaveToFile(FileName,[Options])
说明:将对像的内容写到FileName指定的文件中
参数说明:FileName指定的文件
Options 存取的选项,可不指定,可选参数如下:
adSaveCreateNotExist =1
adSaveCreateOverWrite =2

SetEOS 方法
使用方法如下:
Object.setEOS()
说明:
SkipLine 方法
使用方法如下:
Object.SkipLine()
说明:
Write 方法
使用方法如下:
Object.Write(Buffer)
说明:将指定的数据装入对像中。
参数说明:Buffer 为指定的要写入的内容。
WriteText 方法
使用方法如下:
Object.Write(Data,[Options])
说明:将指定的文本数据装入对像中。
参数说明:Data 为指定的要写入的内容。
Options 写入的选项,可不指定,可选参数如下:
adWriteChar =0
adWriteLine =1

有下列属性:
Charset
EOS 返回对像内数据是否为空。

LineSeparator 指定换行格式,可选参数有
adCR =13
adCRLF =-1
adLF =10

Mode 指定或返加模式。

Position 指定或返加对像内数据的当前指针。

Size 返回对像内数据的大小。

State 返加对像状态是否打开。

Type 指定或返回的数据类型,可选参数为:
adTypeBinary =1
adTypeText =2

用了6行代码实现了无组件上传:

strFileName = Request.QueryString("file1")
Set objStream = Server.CreateObject("ADODB.Stream")
objStream.Type = 1 ' adTypeBinary
objStream.Open
objStream.LoadFromFile strFileName
objStream.SaveToFile Server."123_onweb.gif",2

使用方法:

把上面的代码写成upload.asp
在浏览器里面输入:
http://XXX/upload.asp?file1=c:\上传文件\123.gif
XXX为你的主机地址
执行完后你会看到你的目录下面多了一个123_onweb.gif
他就是你要文件拉!!!!

根据原理我们可以扩展以下代码:
upload.asp文件
<%
Function GetFileName(ByVal strFile)
If strFile <> "" Then
GetFileName = mid(strFile,InStrRev(strFile, "\")+1)
Else
GetFileName = ""
End If
End function

strFileName = Request.Form("file1")
Set objStream = Server.CreateObject("ADODB.Stream")
objStream.Type = 1 ' adTypeBinary
objStream.Open
objStream.LoadFromFile strFileName
objStream.SaveToFile Server.MapPath(GetFileName(strFileName)),2
objStream.Close
%>

upload.htm文件
<form name="FORM" action="upload.asp" method="post">
<input type="submit" name="submit" value="OK">
<input type="file" name="file1" style="width:400" value="">
</form>

读文件不想用FSO,有的空间不支持。
有一个LoadFromFile的方法。可以读取文件。
下面是我的代码。

function readfile(URL,chartype)
set srmObj = server.CreateObject("adodb.stream")
srmObj.type=1
srmObj.mode=3
srmObj.open
srmObj.Position=0
srmObj.LoadFromFile URL

srmObj.Position = 0
srmObj.type=2
srmObj.charset=chartype
readfile=srmObj.readtext()

end function

两个参数。URL是文件的路径,好像只能绝对路径。chartype是文件以什么编码存放的。

返回一个字符串,存放文件的内容。

这个函数只能读文本文件。读二进制文件也差不多。要用的人可以自己改
< = src="/article/js/c9.js"> 基于adodb.stream的文件操作类
<%

’*************************************************************
’转发时请保留此声明信息,这段声明不并会影响你的速度!
’*************************************************************

’*************************************************************
’@author: 面条
’@realname: 徐仁禄
’@email: xurenlu@sohu.com
’@QQ: 55547082
’@Homepage: http://www.ksdn.net
’@版权申明:
’ 非盈利性质团体或者个人可以免费使用.
’*************************************************************

’*************************************************************
’ 类名称: files
’ 类功能: 实现文件读写功能,利用adodb.stream实现,在不支持fso的主机上也可以读写文件.
’*************************************************************

class files

private adSaveCreateOverWrite ’创建文件的时候可以覆盖已经存在的文件.
private adSaveCreateNotExist ’保存文件的时候如果文件不存在,可以创建文件.

’*************************************************************
’ 事件名称: Class_Initialize()
’ 事件发生条件: 类创建时候产生该事件
’ 事件内容: 给私有变量赋值
’ 事件传入参数: 无
’*************************************************************

sub Class_Initialize()
adSaveCreateOverWrite =2
adSaveCreateNotExist = 1
end sub

’*************************************************************
’ 函数名称: function readfile(filepath)
’ 函数内容: 读出文件
’ 传入参数: filepath:要读的文件的绝对路径
’ 返回参数: 要读的文件的内容.
’*************************************************************
function readfile(filepath)

on error resume next

dim stm2

set stm2 =server.createobject("ADODB.Stream")
stm2.Charset = "gb2312"
stm2.Open
stm2.LoadFromFile filepath
readfile = stm2.ReadText
end function

’*************************************************************
’ 函数名称: function writefile(filepath,str)
’ 函数内容: 写入文件
’ 传入参数: filepath:要读的文件的绝对路径
’ str: 要写入的内容
’ 返回参数: 无返回
’*************************************************************

function writefile(filepath,str)

on error resume next

Set stm = server.createobject("ADODB.Stream")
stm.Charset = "gb2312"
stm.Open
stm.WriteText str
stm.SaveToFile filepath, adSaveCreateOverWrite
end function

’*************************************************************
’ 函数名称: function copy(filepath_s,filepath_d)
’ 函数内容: 读出文件
’ 传入参数: filepath_d:目的文件的绝对路径
’ filepath_s:源文件路径
’*************************************************************
function copy(filepath_s,filepath_d)
on error resume next
dim stm2
set stm2 =server.createobject("ADODB.Stream")
stm2.Charset = "gb2312"
stm2.Open
stm2.LoadFromFile filepath_s
stm2.SaveToFile filepath_d, adSaveCreateOverWrite
end function

end class

利用Adodb.Stream直接下载文件

在浏览器的地址栏里直接输入一个doc或xls或jpg的文件的url路径,那么该文件会直接显示在浏览器里

。而在很多时候我们希望能直接弹出下载提示框让用户下载,我们该怎么办呢?这里有两种方法:
1、设置你的服务器的iis,给doc等后缀名做映射
2、在向客户端发送时设置其contenttype

下面详细说明方法2
程序代码:

_code style="DISPLAY: none" name="html_code"><%
Response.Buffer = true
Response.Clear

dim url
Dim fso,fl,flsize
dim Dname
Dim objStream,ContentType,flName,isre,url1
'*********************************************调用时传入的下载文件名
Dname=trim(request("n"))
'******************************************************************
If Dname<>"" Then
'******************************下载文件存放的服务端目录
url=server.MapPath("/")&"\"&Dname
'***************************************************
End If

Set fso=Server.CreateObject("Scripting.FileSystemObject")
Set fl=fso.getfile(url)
flsize=fl.size
flName=fl.name
Set fl=Nothing
Set fso=Nothing
%>
<%
Set objStream = Server.CreateObject("ADODB.Stream")
objStream.Open
objStream.Type = 1
objStream.LoadFromFile url

Select Case lcase(Right(flName, 4))
Case ".asf"
ContentType = "video/x-ms-asf"
Case ".avi"
ContentType = "video/avi"
Case ".doc"
ContentType = "application/msword"
Case ".zip"
ContentType = "application/zip"
Case ".xls"
ContentType = "application/vnd.ms-excel"
Case ".gif"
ContentType = "image/gif"
Case ".jpg", "jpeg"
ContentType = "image/jpeg"
Case ".wav"
ContentType = "audio/wav"
Case ".mp3"
ContentType = "audio/mpeg3"
Case ".mpg", "mpeg"
ContentType = "video/mpeg"
Case ".rtf"
ContentType = "application/rtf"
Case ".htm", "html"
ContentType = "text/html"
Case ".txt"
ContentType = "text/plain"
Case Else
ContentType = "application/octet-stream"
End Select

Response.AddHeader "Content-Disposition", "attachment; filename=" & flName
Response.AddHeader "Content-Length", flsize

Response.Charset = "UTF-8"
Response.ContentType = ContentType

Response.BinaryWrite objStream.Read
Response.Flush
response.Clear()
objStream.Close
Set objStream = Nothing

%>
_lightcode style="BORDER-RIGHT: #999999 1px dotted; PADDING-RIGHT: 5px; BORDER-TOP: #999999

1px dotted; PADDING-LEFT: 5px; FONT-SIZE: 11px; PADDING-BOTTOM: 5px; BORDER-LEFT: #999999

1px dotted; PADDING-TOP: 5px; BORDER-BOTTOM: #999999 1px dotted; FONT-FAMILY: sans-serif;

HEIGHT: 40px; BACKGROUND-COLOR: #f9f9f9" name="html_lightcode"><%
Response.Buffer = true
Response.Clear

dim url
Dim fso,fl,flsize
dim Dname
Dim objStream,ContentType,flName,isre,url1
'*********************************************调用时传入的下载文件名
Dname=trim(request("n"))
'******************************************************************
If Dname<>"" Then
'******************************下载文件存放的服务端目录
url=server.MapPath("/")&"\"&Dname
'***************************************************
End If

Set fso=Server.CreateObject("Scripting.FileSystemObject")
Set fl=fso.getfile(url)
flsize=fl.size
flName=fl.name
Set fl=Nothing
Set fso=Nothing
%>
<%
Set objStream = Server.CreateObject("ADODB.Stream")
objStream.Open
objStream.Type = 1
objStream.LoadFromFile url

Select Case lcase(Right(flName, 4))
Case ".asf"
ContentType = "video/x-ms-asf"
Case ".avi"
ContentType = "video/avi"
Case ".doc"
ContentType = "application/msword"
Case ".zip"
ContentType = "application/zip"
Case ".xls"
ContentType = "application/vnd.ms-excel"
Case ".gif"
ContentType = "image/gif"
Case ".jpg", "jpeg"
ContentType = "image/jpeg"
Case ".wav"
ContentType = "audio/wav"
Case ".mp3"
ContentType = "audio/mpeg3"
Case ".mpg", "mpeg"
ContentType = "video/mpeg"
Case ".rtf"
ContentType = "application/rtf"
Case ".htm", "html"
ContentType = "text/html"
Case ".txt"
ContentType = "text/plain"
Case Else
ContentType = "application/octet-stream"
End Select

Response.AddHeader "Content-Disposition", "attachment; filename=" & flName
Response.AddHeader "Content-Length", flsize

Response.Charset = "UTF-8"
Response.ContentType = ContentType

Response.BinaryWrite objStream.Read
Response.Flush
response.Clear()
objStream.Close
Set objStream = Nothing

%>
_sunny.gif" width=0 onload=show(this)>
参考技术A 用adodb.stream 可以读取各种类型的文件,包括自定义格式文件

建议不用用它,会给服务器带来不安全隐患的.

如何禁用ADODB.STREAM
XP上是C:\Program Files\Common Files\System\ado\msado15.dll

然后regsvr32 /s /u "C:\Program Files\Common Files\System\ado\msado15.dll"

如果启用ADODB.STREAM
你可用
regsvr32 scrrun.dll
regsvr32 msado15.dll

来注同该组件

addScalar 是做啥的?

【中文标题】addScalar 是做啥的?【英文标题】:What does addScalar do?addScalar 是做什么的? 【发布时间】:2013-03-01 11:05:20 【问题描述】:

JavaDoc 说:

SQLQuery org.hibernate.SQLQuery.addScalar(String columnAlias, Type type)

Declare a scalar query result

我知道executeScalar 在 C# 中是什么,但这个标量和 C# 标量似乎完全不同。

【问题讨论】:

【参考方案1】:

这声明您希望查询结果返回单个命名列的对象,而不是实体。比如

createSQLQuery("SELECT COUNT(*) AS c FROM Users").addScalar("c").uniqueResult()

将返回一个Long。如果您指定多个标量,则结果将以Object 的数组形式返回。它类似于executeScalar,不同之处在于它适用于命名列,并且可以返回复合结果。

【讨论】:

【参考方案2】:

为了避免使用 ResultSetMetadata 的开销,或者只是为了更明确地返回返回的内容,可以使用 addScalar():

session.createSQLQuery("SELECT * FROM CATS")
.addScalar("ID", Hibernate.LONG)
.addScalar("NAME", Hibernate.STRING)
.addScalar("BIRTHDATE", Hibernate.DATE)

此查询指定:

the SQL query string
the columns and types to return

这将返回 Object 数组,但现在它不会使用 ResultSetMetadata,而是从底层结果集中显式获取 ID、NAME 和 BIRTHDATE 列,分别作为 Long、String 和 Short。这也意味着只有这三列将被返回,即使查询使用 * 并且可能返回多于列出的三列。

可以省略所有或部分标量的类型信息。

session.createSQLQuery("SELECT * FROM CATS")
.addScalar("ID", Hibernate.LONG)
.addScalar("NAME")
.addScalar("BIRTHDATE")

这与之前的查询基本相同,但现在 ResultSetMetaData 用于确定 NAME 和 BIRTHDATE 的类型,其中明确指定了 ID 的类型。

复制自this。

【讨论】:

@IrfanNasim:这些类型字段在最近的 Hibernate 版本中似乎已被弃用。查看this answer。现在你应该使用LongType.INSTANCE 而不是Hibernate.LONG @Evan 有没有办法让我只能对某些列执行 addScalar(columnName, type) 但查询结果应该包含所有字段,因为我在选择查询中指定了 * ?所以我的问题是,在我的 PostgreSQL 中,该字段的数据类型是 bigserial,在我的 Java 代码中转换为 BigInteger。但是我的 POJO 类的这些字段为 Long,所以我使用 addScalar(...) 指定了这些 Long 字段的类型,但现在我的查询只返回那些有限的字段。我无法找到出路。有什么想法吗?【参考方案3】:

addScalar是SQL查询中给定键的returnType信息。

例子:

Query a = new SqlQuery("Select username as un from users where ...");
a.addScalar("un", String);

如果查询结果,结果会是String或其他类型,如果你指定。

【讨论】:

【参考方案4】:

当您的 bean 具有多个具有不同类型的字段并且您希望从 mysql 获取相同类型的这些字段时使用此选项。 例如。

public class Example  Long id; String name; 

您可以按如下方式使用添加标量

session.createSQLQuery("SELECT * FROM tableName")
.addScalar("id", Hibernate.LONG)
.addScalar("name", Hibernate.STRING);

【讨论】:

以上是关于adodb.stream是做啥的的主要内容,如果未能解决你的问题,请参考以下文章

addScalar 是做啥的?

LoaderManager 是做啥的?

adodb.stream的介绍

sizeof 是做啥的?

FragmentManager 和 FragmentTransaction 到底是做啥的?

这段代码是做啥的? [关闭]