1. 利用DSN连接。
<html>
<head>
<title>creat table example</title>
</head>
<body bgcolor="#C0C0C0">
<%
Set Conn=Server.CreateObject("ADODB.Connection")
StrConn="DSN=test;Uid=system;Pwd=manager;"
Conn.Open strConn
SQL="create table aaa(dz char(1),成功 char(2));"
Conn.Execute(SQL)
Response.Write "数据库生成工作已完成!"
Conn.Close
%>
</body>
</html>
2.直接连接SQL Server
Set Conn=Server.CreateObject("ADODB.Connection")
Conn.Open"Driver={SQL Server};Server=(Local);UID=dbuser12;PWD=dbuser12;DATABASE=dbuser12"
3
.另外的几种连接方式:
第一种
-
这种方法用在
ACCESS
中最多
strconn = "DRIVER=Microsoft Access Driver (*.mdb);DBQ=" _
& Server.MapPath("aspfree.mdb")
set conn = server.createobject("adodb.connection")
conn.open strconn
第二种-这种方法用在SQL SERVER中多
strconn = "Driver={SQL Server};Description=sqldemo;SERVER=127.0.0.1;" _
&"UID=LoginID;Password=;DATABASE=Database_Name"
set conn = server.createobject("adodb.connection")
conn.open strconn
第三种
strconn="Driver={Microsoft Access Driver(*.mdb)};" _
&"DBQ=F:/Inetpub/wwwroot/somedir/db1.mdb;DefaultDir=" _
&"f:/Inetpub/wwwroot/somedir;uid=LoginID;" _
&"pwd=Password;DriverId=25;FIL=MSAccess;"
set conn = server.createobject("adodb.connection")
conn.open strconn
第四种运用系统数据源
The following uses a Data Source Name: Example
set conn = server.createobject("adodb.connection")
conn.open "Example"
第五种运用
ODBC
数据源,前提是你必须在控制面板的
ODBC
中设置数据源
set rs = server.createobject("adodb.recordset")
rs.open "tblname", "DSNName", 3, 3
建立记录集对象:
set rs=server.createobject("adodb.recordset")
rs.open SQL语句,conn,3,2
例4. 记录集对象的方法:
rs.movenext 将记录指针从当前的位置向下移一行
rs.moveprevious 将记录指针从当前的位置向上移一行
rs.movefirst 将记录指针移到数据表第一行
rs.movelast 将记录指针移到数据表最后一行
rs.absoluteposition=N 将记录指针移到数据表第N行
rs.absolutepage=N 将记录指针移到第N页的第一行
rs.pagesize=N 设置每页为N条记录
rs.pagecount 根据 pagesize 的设置返回总页数
rs.recordcount 返回记录总数
rs.bof 返回记录指针是否超出数据表首端,true表示是,false为否
rs.eof 返回记录指针是否超出数据表末端,true表示是,false为否
rs.delete 删除当前记录,但记录指针不会向下移动
rs.addnew 添加记录到数据表末端
rs.update 更新数据表记录
例5 Recordset对象方法
Open方法
recordset.Open Source,ActiveConnection,CursorType,LockType,Options
Source
Recordset对象可以通过Source属性来连接Command对象。Source参数可以是一个Command对象名称、一段SQL命令、一个指定的数据表名称或是一个Stored Procedure。假如省略这个参数,系统则采用Recordset对象的Source属性。
ActiveConnection
Recordset对象可以通过ActiveConnection属性来连接Connection对象。这里的ActiveConnection可以是一个Connection对象或是一串包含数据库连接信息(ConnectionString)的字符串参数。
CursorType
Recordset对象Open方法的CursorType参数表示将以什么样的游标类型启动数据,包括adOpenForwardOnly、adOpenKeyset、adOpenDynamic及adOpenStatic,分述如下:
常数
|
常数值
|
说明
|
adOpenForwardOnly
|
0
|
缺省值,启动一个只能向前移动的游标(ForwardOnly)
|
adOpenKeyset
|
1
|
启动一个Keyset类型的游标。
|
adOpenDynamic
|
2
|
启动一个Dynamic类型的游标。
|
adOpenStatic
|
3
|
启动一个Static类型的游标。
|
以上几个游标类型将直接影响到Recordset对象所有的属性和方法,以下列表说明他们之间的区别。
Recordset属性
|
adOpenForwardOnly
|
adOpenKeyset
|
adOpenDynamic
|
adOpenStatic
|
AbsolutePage
|
不支持
|
不支持
|
可读写
|
可读写
|
AbsolutePosition
|
不支持
|
不支持
|
可读写
|
可读写
|
ActiveConnection
|
可读写
|
可读写
|
可读写
|
可读写
|
BOF
|
只读
|
只读
|
只读
|
只读
|
Bookmark
|
不支持
|
不支持
|
可读写
|
可读写
|
CacheSize
|
可读写
|
可读写
|
可读写
|
可读写
|
CursorLocation
|
可读写
|
可读写
|
可读写
|
可读写
|
CursorType
|
可读写
|
可读写
|
可读写
|
可读写
|
EditMode
|
只读
|
只读
|
只读
|
只读
|
EOF
|
只读
|
只读
|
只读
|
只读
|
Filter
|
可读写
|
可读写
|
可读写
|
可读写
|
LockType
|
可读写
|
可读写
|
可读写
|
可读写
|
MarshalOptions
|
可读写
|
可读写
|
可读写
|
可读写
|
MaxRecords
|
可读写
|
可读写
|
可读写
|
可读写
|
PageCount
|
不支持
|
不支持
|
只读
|
只读
|
PageSize
|
可读写
|
可读写
|
可读写
|
可读写
|
RecordCount
|
不支持
|
不支持
|
只读
|
只读
|
Source
|
可读写
|
可读写
|
可读写
|
可读写
|
State
|
只读
|
只读
|
只读
|
只读
|
Status
|
只读
|
只读
|
只读
|
只读
|
AddNew
|
支持
|
支持
|
支持
|
支持
|
CancelBatch
|
支持
|
支持
|
支持
|
支持
|
CancelUpdate
|
支持
|
支持
|
支持
|
支持
|
Clone
|
不支持
|
不支持
|
|
|
Close
|
支持
|
支持
|
支持
|
支持
|
Delete
|
支持
|
支持
|
支持
|
支持
|
GetRows
|
支持
|
支持
|
支持
|
支持
|
Move
|
不支持
|
支持
|
支持
|
支持
|
MoveFirst
|
支持
|
支持
|
支持
|
支持
|
MoveLast
|
不支持
|
支持
|
支持
|
支持
|
MoveNext
|
支持
|
支持
|
支持
|
支持
|
MovePrevious
|
不支持
|
支持
|
支持
|
支持
|
NextRecordset
|
支持
|
支持
|
支持
|
支持
|
Open
|
支持
|
支持
|
支持
|
支持
|
Requery
|
支持
|
支持
|
支持
|
支持
|
Resync
|
不支持
|
不支持
|
支持
|
支持
|
Supports
|
支持
|
支持
|
支持
|
支持
|
Update
|
支持
|
支持
|
支持
|
支持
|
UpdateBatch
|
支持
|
支持
|
支持
|
支持
|
--------------------------------------------------------------
其中NextRecordset方法并不适用于Microsoft Access数据库。
例:
asp
实现批量录入数据的实现
批量录入在数据库的应用中比较广泛的,关于批量录入的方法也有好多种。
主要用到的是form的集合的概念,通过循环取的所有的集合内数据。
下面是具体的代码:
batchInput.asp
<%
'#####################################
'File Function:批量录入数据
'Author:Myhon
'Date:2003-8-19
'#####################################
'向数据库写入数据
SUB writeData()
dim recCnt,i
dim fieldName1,fieldName2,fieldName3
dim conn
dim sqlStr,connStr
connStr="Provider=SQLOLEDB.1;Initial Catalog=myDatabase;Data Source=myhon;User Id=sa;PASSWORD="
set conn=Server.CreateObject("ADODB.Connection")
conn.open connStr '建立数据库连接
recCnt=request.form("stu_num").count '取得共有多少条记录
'批量录入数据
for i=1 to recCnt
fieldName1=trim(request.form("fieldName1")(i))
fieldName2=trim(request.form("fieldName2")(i))
fieldName3=trim(request.form("fieldName3")(i))
sqlStr="insert into myTable(fieldName1,fieldName2,fieldName3) values('"
sqlStr=sqlStr & fieldName1 & "','"
sqlStr=sqlStr & fieldName2 & "','"
sqlStr=sqlStr & fieldName3 & "')"
'response.write sqlStr
conn.execute(sqlStr)
next
END SUB
'显示成批录入的界面
SUB InputData()
dim recCnt,i
%>
<form name="bathInputData" action="" method="post">
<%
recCnt=cint(request.form("recCnt"))
for i=1 to recCnt
%>
<input type="text" name="fieldName1">
<input type="text" name="fieldName2">
<input type="text" name="fieldName3">
<%
next
%>
<br>
<input type="submit" name="action" value="提交">
</form>
<%
END SUB
'指定要批量录入多少条记录
SUB assignHowMuch()
%>
<!------指定要录入多少条记录-------------->
<form name="form1" action="" method="post">
您要录入的记录的条数:<input type="text" name="recCnt">
<input type="submit" name="action" value="下一步>>">
</form>
<%
END SUB
if request.form("action")="下一步>>" then
Call InputData() '显示成批录入界面
elseif request.form("action")="提交" then Call writeData() '向数据库批量写入数据
else
Call assignHowMuch() '显示指定录入多少条记录的界面
end if
%>
主要用到的是form的集合的概念,通过循环取的所有的集合内数据。
下面是具体的代码:
batchInput.asp
<%
'#####################################
'File Function:批量录入数据
'Author:Myhon
'Date:2003-8-19
'#####################################
'向数据库写入数据
SUB writeData()
dim recCnt,i
dim fieldName1,fieldName2,fieldName3
dim conn
dim sqlStr,connStr
connStr="Provider=SQLOLEDB.1;Initial Catalog=myDatabase;Data Source=myhon;User Id=sa;PASSWORD="
set conn=Server.CreateObject("ADODB.Connection")
conn.open connStr '建立数据库连接
recCnt=request.form("stu_num").count '取得共有多少条记录
'批量录入数据
for i=1 to recCnt
fieldName1=trim(request.form("fieldName1")(i))
fieldName2=trim(request.form("fieldName2")(i))
fieldName3=trim(request.form("fieldName3")(i))
sqlStr="insert into myTable(fieldName1,fieldName2,fieldName3) values('"
sqlStr=sqlStr & fieldName1 & "','"
sqlStr=sqlStr & fieldName2 & "','"
sqlStr=sqlStr & fieldName3 & "')"
'response.write sqlStr
conn.execute(sqlStr)
next
END SUB
'显示成批录入的界面
SUB InputData()
dim recCnt,i
%>
<form name="bathInputData" action="" method="post">
<%
recCnt=cint(request.form("recCnt"))
for i=1 to recCnt
%>
<input type="text" name="fieldName1">
<input type="text" name="fieldName2">
<input type="text" name="fieldName3">
<%
next
%>
<br>
<input type="submit" name="action" value="提交">
</form>
<%
END SUB
'指定要批量录入多少条记录
SUB assignHowMuch()
%>
<!------指定要录入多少条记录-------------->
<form name="form1" action="" method="post">
您要录入的记录的条数:<input type="text" name="recCnt">
<input type="submit" name="action" value="下一步>>">
</form>
<%
END SUB
if request.form("action")="下一步>>" then
Call InputData() '显示成批录入界面
elseif request.form("action")="提交" then Call writeData() '向数据库批量写入数据
else
Call assignHowMuch() '显示指定录入多少条记录的界面
end if
%>