在 T00ls 看到个帖子,写了一点东西,在这里记录一下,以后可能用得着。
帖子标题:这段代码是怎么连接数据库的?,内容为:
这段代码是conn.asp
<% set conn=server.createobject("ADODB.CONNECTION") conn.open "s2008","xc","s&2008!!" set lsxdconn=server.CreateObject("Adodb.connection") lsxdconn.open "ld","xd","dx+2008" %>
这段是调用conn.asp的login.asp
<%@ Language=VBScript %> <!--#include file=conn.asp --> <% username=trim(Request.form("username")) password=trim(Request.form("password")) username=replace(username,"'","''") u_password=replace(password,"'","''") whereip=Request.ServerVariables("REMOTE_ADDR") set rs=server.CreateObject ("ADODB.RecordSet") rs.Source="select * from users where username='" & username & "' and password='" & u_password & "'" rs.Open rs.Source,conn,1,3 if not rs.EOF then if rs("lock")="1" then response.write"未能登录,请联系网站管理部门" response.end end if rs("login_times")=rs("login_times")+1 rs("login_time")=now() session("id")=rs("userid") session("username")=trim(rs("username")) session("realname")=trim(rs("realname")) session("password")=trim(rs("password")) session("department")=trim(rs("dept_id")) session.timeout=480 zm=rs("realname") rs.update rs.close 'following steps created by Xuhb set rs1=server.CreateObject ("ADODB.RecordSet") rs1.Source="select * from stx.dbo.Employee_No where name='" & zm & "'" rs1.Open rs1.Source,conn,3,2 if not rs1.eof then session("workno")=rs1("Number") else session("workno")=zm end if session("duihua")=zm rs1.close 'steps end set rslog=server.CreateObject("adodb.recordset") rslog.source="select top 1 log_time from logfile where username='"&session("id")&"' order by log_time desc" rslog.open rslog.source,conn,1,1 if datediff("n",rslog("log_time"),now())>10 then conn.Execute ("update users set score=score+1 where userid="&session("id")) end if conn.Execute ("INSERT INTO logfile (username,log_time,log_ip,realname) VALUES ('" & session("id") & "',getdate(),'" & whereip & "','" & zm &"')") response.redirect"index.asp" else %> <script language=javascript> history.back() alert("用户名或密码错误!请重新输入。") </script> <% Response.End end if %>
服务器的环境是Windows2003+IIS6.0+MSSQL
实在是解不开conn.asp的数据库连接语句
尝试过将上面连接字符串当成MSSQL账号密码来登录、但都登录失败、MSSQL服务是有开放的
第一次遇见这种问题、求解
我给个权威的解答:
<% set conn=server.createobject("ADODB.CONNECTION") conn.open "s2008","xc","s&2008!!" '用于描述数据源的字符串,账号,密码 …… %>
----------------------------------------------------------------------------
数据库连接对象(ADODB. Connection)
该对象用于与ODBC数据库建立连接,所有对数据库的操作均通过该连接进行。
数据库连接对象ADODB. Connection的作用象Delphi中的TDatabase对象。
建立一个连接对象的方法为(AConnection为Variant类型变量):
AConnection:=CreateOleObject(’A DODB.Connection’)
用于建立连接的方法为Open,使用语法为(以对象AConnection为例):
AConnection.Open( ConnectionString, UserId, Password )
三个参数均为字符串类型,其中UserId和Password为用户名称和用户密码,用于访问数据库使用时可以省略,因为在ConnectionString同样可以指定用户名称和用户密码。ConnectionString是用来说明ODBC数据源信息的字符串,其格式为:
’Provider=ProviderName; DSN=DSNName; DRIVER=driver; SERVER=server; DATABASE=database; UID=user; PWD=password’
其中:
Provider:数据提供者,默认状态下为MSDASQL,为微软OLEDB,通常省略;
DSN:要打开的数据库对应的OBDC系统数据源(DSN),是可选参数;
DRIVER:要打开的数据库所用的驱动程序名称,如Access对应Microsoft Access Driv (*.mdb),是可选参数;
SERVER:要打开的数据库所在的服务器名称,本机可用(local),是可选参数;
DATABASE:要打开的数据库名称,是可选参数;
UID:用户名称,用来访问数据库,是可选参数;
PWD:用户密码,用来访问数据库,是可选参数。
以上参数均为可选参数,但必须提供足够的信息来描述一个系统数据源。
建立一个ADODB.Connection后,如果不需要返回操作结果(如删除,修改,更新等操作)就可以对数据库进行正常的SQL操作了,此时应用ADODB.Connection的另外一个方法Execute,使用语法为:
AConnection.Execute( strSQL );
其中strSQL为执行操作的SQL语句,如删除操作可以为:delete from wfjcommu。用AConnection.Close关闭一个数据库连接。
----------------------------------------------------------------------------
所以嘛,很显然 s2008 是一个系统数据源名称。
关于:系统数据源 (DSN)
----------------------------------------------------------------------------
如何在 Windows XP 中创建系统数据源名称:
http://support.microsoft.com/default.aspx?scid=kb;zh-cn;305599
数据源名称 (DSN) 是一个逻辑名称,开放数据库连接 (ODBC) 使用它引用驱动器以及访问数据所需的其他信息。Internet 信息服务 (IIS) 使用该名称连接到诸如 Microsoft SQL Server 数据库之类的 ODBC 数据源。若要设置该名称,请使用“控制面板”中的 ODBC 工具。
使用 ODBC DSN 项在外部存储连接字符串值时,简化了连接字符串所需的信息。您这样做的时候,就对数据源做了更改,而这些更改对于代码是完全透明的。本文介绍了如何在 Windows XP 中创建系统数据源名称。
----------------------------------------------------------------------------
数据源名称、Data Source Name、DSN:
http://baike.baidu.com/view/588961.htm#1
原名:Data Source Name
中文名:数据源名称
DSN为ODBC定义了一个确定的数据库和必须用到的ODBC驱动程序。每个ODBC驱动程序定义为该驱动程序支持的一个数据库创建DSN需要的信息。就是说安装ODBC驱动程序以及创建一个数据库之后,必须创建一个DSN。
----------------------------------------------------------------------------
所以,不出意外的话,你可以单击开始,指向控制面板,双击管理工具,然后双击数据源 (ODBC),就能看到你想看到的信息了。
同时,还有各种脚本代码可以列出来当前系统中存在的数据源,网上一搜一大堆。
你可能会问,这么说,"xc","s&2008!!" 就是账号密码了?
不一定,因为在ConnectionString同样可以指定用户名称和用户密码,所具体要看数据源中的信息。
数据源的信息都在注册表里,列出所有DSN:
VB:http://hi.baidu.com/%C3%CD%BB%A2%B3%F6%C1%FDxy/blog/item/45a97a6671fa86faf6365463.html