870 likes | 993 Views
ASP 存取数据库. 学习连接数据库 实现查询、添加、删除和修改功能 了解 ADO 的几大对象及相互关系 学习各种事务处理和分页显示数据 学习连接 SQL Server 数据库的语句。. 目的与要求. 熟练掌握连接数据库的两种方式 利用 Select 语句查询记录、 Insert 语句添加、 Delete 语句删除、 Update 语句修改记录 了解 ADO 的几大内部对象: Connection 对象、 Recordset 对象、 Command 对象的概念和相互关系 会使用事务处理、会分页显示. 重点难点. 数据库连接和 SQL 语句的写法
E N D
ASP存取数据库 • 学习连接数据库 • 实现查询、添加、删除和修改功能 • 了解ADO的几大对象及相互关系 • 学习各种事务处理和分页显示数据 • 学习连接SQL Server数据库的语句。
目的与要求 • 熟练掌握连接数据库的两种方式 • 利用Select语句查询记录、Insert语句添加、Delete语句删除、Update语句修改记录 • 了解ADO的几大内部对象:Connection对象、Recordset对象、Command对象的概念和相互关系 • 会使用事务处理、会分页显示
重点难点 • 数据库连接和SQL语句的写法 • 利用execute方法和sql语句实现查询、添加、修改、删除 • 利用Connection对象、Recordset对象、Command对象实现数据库的深入操作,如分页显示等(难点)
数据库存取组件简介: 数据库存取组件是使用ADO技术存取数据库的一种ASP内置组件,是ASP内置组件中最重要的和使用最多的一个组件。 ADO包括三个主要对象是:Connection、Command和Recordset 以下将以网络导航为例讲解 连接数据库、查询记录、添加记录、删除记录、修改记录 利用数据库存取组件存取数据库
数据库准备 • 在Access中建立数据库wwwlink.mdb,存放在站点根目录下,如图
连接数据库 • 连接数据库,要用到Connection对象,具体连接方法有两种: • 第一种:利用数据源连接 • 特点:连接简单,但需要在服务器设置数据源 • 假设配置的数据源名字为wlink,则代码如下 • <% • Set db=server.CreateObject(“ADODB.Connection”) • Db.open “wlink” • %>
连接数据库 • 不用数据源的连接方法 • 优点:方便在机器之间移植代码 • 代码举例(假设数据库与页面在同一目录下): • <% • Set db=server.CreateObject(“ADODB.Connection”) • Db.open “dbq=c:\inetpub\wwwroot\wwwlink.mdb;”&_ • “Driver={Microsoft Access Driver(*.mdb)}” • %>
连接数据库 • 对于第二种方法,还可采用Server对象的Mappath方法,修改为: • <% • Set db=server.CreateObject(“ADODB.Connection”) • Db.open “dbq=”&server.mappath(“wwwlink.mdb”)&_ • “;Driver={Microsoft Access Driver(*.mdb)}” • %>
利用select语句查询记录 • 查询时用Connection对象的Execute方法打开一个记录集 • 然后在记录集中移动记录指针依次显示所有记录 • 下面建立一个Connection对象实例db <% set db=Server.Createobject("ADODB.Connection") db.Open "DBQ="&Server.Mappath("wwwlink.mdb")&_ ";DRIVER={Microsoft Access Driver (*.mdb)};" %>
利用select语句查询记录(续) • 建立Recordset对象实例rs dim strsql,rs strsql="select * from link order by link_id desc" '按降序排列set rs=db.Execute(strsql)
利用insert语句添加记录 • 添加记录,利用Connection对象的Execute方法,不必返回记录集。 • 连接数据库,建立一个Connection对象实例db set db=Server.Createobject("ADODB.Connection") db.Open "DBQ="&Server.Mappath("wwwlink.mdb")&_ ";DRIVER={Microsoft Access Driver (*.mdb)};"
利用insert语句添加记录(续) • 获取上个页面的插入信息 varName=Request("name") varURL=Request("URL") varIntro=Request("intro")
利用insert语句添加记录(续) • 插入Sql语句的写法 • 利用Execute方法,添加记录 StrSql="insert into link(name,URL, intro,”&_ ”submit_date) values(‘" &varName & “’,’" &_ varURL & “’,’" &_ varIntro & “’,’" & Date() & “’)" db.execute(strSql)
利用Delete删除记录 • 删除记录,利用Connection对象的Execute方法,不必返回记录集 • 连上数据库,建立一个Connection对象实例db set db=Server.Createobject("ADODB.Connection") db.Open "DBQ="&Server.Mappath("wwwlink.mdb")&_ ";DRIVER={Microsoft Access Driver (*.mdb)};"
利用Delete删除记录(续) • 利用Execute方法,删除记录 • 传过来的要删除的记录的记录编号 • 删除SQL语句的写法 varLink_id=Request.QueryString("link_id“) strSql="delete from link where link_id=" & varLink_id db.Execute(strSql)
利用Update修改语句 • 修改记录,利用Connection对象的Execute方法。 • 获取传入的要修改的Link_ID varLink_id=Request.QueryString("link_id")
利用Update修改语句(续) • 连上数据库,建立一个Connection对象实例db • 建立Recordset对象实例rs set db=Server.Createobject("ADODB.Connection")db.Open "DBQ="&Server.Mappath("wwwlink.mdb")&_";DRIVER={Microsoft Access Driver (*.mdb)};" strSql=“select * from link where link_id=” & varLink_id ‘varLink_id是传过来的 set rs=db.Execute(strSql)
深入进行数据库编程 • ADO的内部对象 • Connection对象 • Command对象 • Recordset对象 • 存取SQL Server对象 • 对多个表进行组合查询
ADO的内部对象 • ADO的主要对象和功能说明
Connection对象 • 学习Connection对象的重点: • 如何建立Connection对象 • Connection对象的Execute方法 • 事务处理功能 • 注意事项 • 需明确建立Connection对象,不明确时将利用Command或Recordset对象直接连接数据库。这样无法利用Connection对象的许多功能 • Connection对象一般用来连接数据库,也可用来查询、添加、删除或修改记录,但有一定局限性,如无法完成分页
建立Connection对象 • 第一步:建立对象,语法如下: • Set Connection 对象=Server.CreateObject(“ADODB.Connection”) • 第二步:用open方法来打开连接,语法如下 • Connection 对象.open “参数1=参数1的值;参数2=参数2的值;……”
Connection对象的Open方法的参数 • 说明: • 参数不会都用到,如Access数据库就不用User和Password • 连接方式不同,参数不同,如数据源用DSN,而不用数据源就用DBQ和Driver • 多个参数之间用分号隔开,顺序无关系
Connection对象常用属性举例 • CommandTimeout:默认值为30秒,如设定为0则无限制直到执行完毕。如设置最长时间为60秒: <%db.CommandTimeout=60%>,在服务器慢时使用 • ConnectionString:指定连接信息,如: <% Db. ConnectionString=“Dbq=”&Server.mappath(“address.mdb”)&_ ”;Driver={Microsoft Access Driver(*.mdb)}” %>
Connection对象常用属性举例 • ConnectionTimeout:该属性默认值为15秒,如设定为0,则表示无限期等待直到Open方法完成为止。 • DefaultDatabase:当数据提供者提供多个数据库时,用该属性设定默认数据库 • Version:显示ADO的版本信息 <%Response.write db.version%>
Connection对象的mode属性(续) • 例子: <% Set db=server.createObject(“ADODB.Connection”) Db.mode=1 %> • 以上例子设置属性为只读,将不能对数据库进行添加、删除或更新记录。
Connection对象常用方法详解 Db.open • Open:打开连接 • Close:关闭连接 • Excute:执行数据库查询 • BeginTrans:开始一个事务 • <% Db.close • Set db=nothing • %> Set Recordset对象 =Connection对象.Excute(SQL字符串) 或 Connection对象. Excute(SQL字符串) Connection对象.BeginTrans
利用Connection对象存取数据库 strConn="DBQ=" & Server.Mappath("address.mdb") & ";Driver={Microsoft Access Driver (*.mdb)}" Set db=Server.CreateObject("ADODB.Connection") db.Open strConn • 连接数据库,建立Connection对象,address.mdb下面将建立
利用Connection对象存取数据库(续) • 查询记录,建立Recordset对象实例rs • 添加记录 strSql="select * from users" Set rs=db.Execute(strSql) Do While Not rs.Eof Response.Write rs("name") & "<br>" rs.Movenext Loop strSql="insert into users(name,tel,email) values”_ ”('李玫','888','limei@263.net')" db.Execute(strSql)
利用Connection对象存取数据库(续) • 更新记录,将李玫的电话号码改为66666666 • 删除记录,删除李玫的记录 strSql="update users set tel='66666666' where name='李玫'" db.Execute(strSql) strSql="delete from users where name='李玫'" db.Execute(strSql)
事务处理 • 开始事务处理 • 如果数据库执行成功则提交事务,如果有错误,则回滚事务 db.BeginTrans If db.Errors.Count=0 Then Db.CommitTrans Else Db.RollbackTrans End If
Command对象 • 建立Command对象 • Command对象的属性 • Command对象的方法 • 利用Command对象存取数据库 • 非参数查询 • 参数查询 • Parameter对象和Parameters集合
建立Command对象 • 建立Command对象,语法如下 • 用ActiveConnection属性指定要用的Connection对象,语法: • 建立对象的两种方法 • 通过Connection对象建立Command对象 • 直接建立Command对象 Set Command对象=Server.CreateObject(“ADODB.Command”) Command对象.ActiveConnection=Connection对象
建立Command对象举例 • 通过Connection对象建立Command对象 • 直接建立Command对象 Set db=Server.CreateObject(“ADODB.Connection”) db.open “addr”‘addr是数据源 Set cmd=Server.CreateObject(“ADODB.Command”) cmd.ActiveConnection=db Set cmd=Server.CreateObject(“ADODB.Command”) cmd.ActiveConnection=“addr”
Command对象的常用属性详解 • ActiveConnection: • CommandText ,其值可以是SQL语句,还可是表名、查询名或存储过程名: 通过Connection对象操作数据库,语法为: Comman对象. ActiveConnection=Connection对象 没有明确建立Connection对象,语法为: Command对象.ActiveConnection=数据源名称字符串 Command对象.CommandText=SQL语句、表名、查询名或存储过程名
Command对象的常用属性详解(续) • CommandTimeout ,默认为30秒,若为0,则永久等待,直至执行,下面设置为60秒: • CommandType ,语法: • Prepared ,语法:True表示先编译存储,False反之 <%cmd.CommandTimeout=60%> Command对象.CommandType=类型值 Command对象.Prepared=布尔值
Command对象的常用属性详解(续) CommandType类型值
Command对象的方法 • Command对象的常用方法: • Execute,语法有两种 Set Recordset对象=Command对象.Execute 或 Command对象.Execute
Command对象的Execute方法的参数: Command对象的方法(续) • CreateParameter:创造一个新的Parameter对象(参数对象),主要是进行参数查询的时候使用
利用Command对象存取数据库 建立Command对象 • 建立Connection对象 strConn="DBQ=" & Server.Mappath("address.mdb") &_ ";Driver={Microsoft Access Driver (*.mdb)}" Set db=Server.CreateObject("ADODB.Connection") db.Open strConn Set cmd= Server.CreateObject("ADODB.Command") cmd.ActiveConnection=db
查询记录 利用Command对象存取数据库(续) strSql="Select * From users" cmd.CommandText= strSql Set rs=cmd.Execute • 添加记录 strSql ="insert into users(name,tel,email) values”&_” “('李玫','88888888','limei@263.net')" cmd.CommandText=strSql cmd.Execute
strSql="delete from users where name='李玫'" cmd.CommandText=strSql cmd.Execute 更新记录 利用Command对象存取数据库(续) strSql ="update users set tel='66666666' where name='李玫'" cmd.CommandText=strSql cmd.Execute • 删除记录,删除李玫的记录
非参数查询 • 建立Command对象 Set cmd= Server.CreateObject("ADODB.Command") cmd.ActiveConnection=db • 执行查询list cmd.CommandType=4 ‘指定查询信息是查询名可以省略 cmd.CommandText= “list”‘指定查询名称 Set rs=cmd.Execute
参数查询 • 在建立查询时,可以使用参数,如下面input_name就是一个参数: • 执行时和非参数查询类似,但是要注意需要传入参数。 Select * From users Where name=input_name
Parameter对象和Parameters集合 • Parameters集合的属性: • 只有一个属性count,用于返回Parameters集合中Parameter • 对象数目 ,语法:Command对象.Paraneters.Count • 建立Parameter对象,语法: Set Parameter对象=Command对象.createParameter (name,type,direction,size,value)