ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: rylane

[分享]网页制做入门

[复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2005-1-12 23:57 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

晕倒,论坛说一个帖子里总字数不能超过一定数字,ASP里关于数据库的连接部分就写这儿吧。

7.与Microsoft Access数据库建立连接 (ADActiveX Data Objects)。想得到字段大小 (如192 Bytes)用ADO中Field对象的ActualSize属性。 连接例一:Server对象的MapPath方法将指定的虚拟路径转换为真实的文件路径,下例的路径结果为C:\InetPub\asp\Northwind.mdb <% @LANGUAGE = VBScript %><% Option Explicit Dim Cnn, StrCnn Set Cnn = Server.CreateObject("ADODB.Connection") '创建 Connection 对象 StrCnn="Driver={Microsoft Access Driver(*.mdb)};DBQ=" & Server.MapPath("\asp")&"\NorthWind.mdb;" 'DSNStatement = "DRIVER=Microsoft Access Driver (*.mdb);DBQ="&Server.MapPath("//my.mdb") Cnn.Open StrCnn '使用 Connection 对象的 Open 方法打开数据库 Response.Write Server.MapPath("\asp") & "\NorthWind.mdb;" & "<br>" Response.Write "数据库连接成功: " & Cnn.State & "<br>" Cnn.close '使用 Connection 对象的 Close 方法关闭连接 Response.Write "数据库已经关闭: " & Cnn.State '输出数据库状态 Set Cnn = Nothing %> '将Connection 对象从内存中删除,以释放资源 连接例二:用OLE DB创建Microsoft Access连接,下面列出关键部分。 <% @LANGUAGE = VBScript %><% Option Explicit Response.Expires=0 '必须写,确保数据不是缓存在客户端的数据, 而是服务器端随时更新过的最新数据 Dim Cnn, rsTest Set Cnn = Server.CreateObject("ADODB.Connection") '第一部分: 建立连接 Cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source = C:\Northwind.mdb" '下面为第二部分: Connection 对象的 Execute 方法得到记录集 Set rsTest = Cnn.Execute("Select * From 运货商")%><HTML><BODY> <% Do While Not rsTest.EOF '第三部分: 将得到的记录集显示到浏览器上 Response.Write rsTest("运货商ID") & "/" & rsTest("公司名称") & "/" & rsTest("电话") & "/"&"<BR>" '此句结果同上:Response.Write rsTest(0)&"/" &rsTest(1) & "/" & rsTest(2) & "/" & "<BR>" rsTest.MoveNext '移到下一条记录 Loop Cnn.close: Set rsTest = Nothing: Set Cnn = Nothing %></BODY></HTML> 连接例三:通过创建 Recordset 对象(初学者只须掌握这方法)。 Dim Cnn, rsTest '第一部分: 建立连接 Set Cnn = Server.CreateObject("ADODB.Connection") Cnn.Open "Provider = Microsoft.Jet.OLEDB.4.0; Data Source= C:\Northwind.mdb" Set rsTest = Server.CreateObject("ADODB.Recordset") '第二部分:创建 RecordSet对象 rsTest.Open "运货商" '也可以用SQL语句:rsTest.open "SELECT * FROM 产品" 连接例四:第一部分的数据连接同例二.但要首先加入<!--#include file="adovbs.inc"-->语句(因为下面用了里面的几个常量,此文件电脑里都有,拷到当前目录下) Dim rsTest '第二部分: 通过创建 RecordSet 对象得到记录集 Set rsTest = Server.CreateObject("ADODB.Recordset") rsTest.Open "运货商",Cnn,adOpenForwardOnly,adLockReadOnly,adCmdTable%> <HTML><BODY><% Do While Not rsTest.EOF '第三部分: 将得到的记录集显示到浏览器上 Response.Write rsTest(0) & "/" & rsTest(1) & "/" & rsTest(2) & "/" & "<BR>" rsTest.MoveNext Loop rsTest.Close: Cnn.Close Set rsTest = Nothing: Set Cnn = Nothing%></BODY></HTML> 分析语句:rsTest.Open "运货商",Cnn,adOpenForwardOnly,adLockReadOnly,adCmdTable 第一个参数可以是表名,也可以是SQL语句。第二个参数指定当前的连接。 第三个参数指示CursorType,打开Recordset时使用的游标类型。 AdOpenForwardOnly:仅向前游标,默认值,只能在记录中向前滚动。可节省资源并提高性能。 AdOpenStatic:静态游标。可用来查找数据或生成报告的记录集合的静态副本。另外,对其他用户所作的添加、更改或删除不可见。 推荐在ASP中只使用这两种游标。 AdOpenKeyset:键集游标。与动态游标相似,不同的只是禁止查看其他用户添加的记录,并禁止访问其他用户删除的记录,其他用户所作的数据更改将依然可见。 AdOpenDynamic:动态游标。可以看见其他用户所作的添加、更改和删除。允许在记录集中进行所有类型的移动。 第四个参数指示LockType,打开Recordset时应该使用的锁定(并发)类型。这里指定为只读。 AdLockReadOnly:默认值,以只读方式打开记录集。 AdLockPessimistic:保守式记录锁定(逐条)。采用编辑时立即锁定数据源的记录的方式。此时,其他用户不能访问该数据。 AdLockOptimistic:开放式记录锁定(逐条)。只在调用 Update 方法时锁定记录。 AdLockBatchOptimistic:开放式批更新。用于成批更新数据,与UpdateBatch方法相对应。 第五个参数与第一个参数相关,第一个参数如为表名则第五个参数使用adCmdTable,第一个参数如为SQL语句则第该参数为adCmdText,如: rsTest.Open "Select * From 运货商",Cnn,adOpenForwardOnly,adLockReadOnly,adCmdText 这五个参数,也可以利用Recordset对象的属性来设置: Dim rsTest '第二部分: 通过创建 RecordSet 对象得到记录集 Set rsTest = Server.CreateObject("ADODB.Recordset") rsTest.ActiveConnection = Cnn rsTest.CursorType = adOpenForwardOnly rsTest.LockType = adLockReadOnly rsTest.Open "运货商", , , ,adCmdTable 连接例五:通过引入 Command 对象,连接数据库及显示数据同前。 Dim StrSQL, rsTest, cmdTest '第二部分: 通过创建 Command 对象得到记录集 Set cmdTest = Server.CreateObject("ADODB.Command") '创建 Command 对象 StrSQL = "SELECT * FROM 产品" cmdTest.CommandText = StrSQL cmdTest.CommandType = adCmdText '表明命令类型为 SQL 语句 Set cmdTest.ActiveConnection = Cnn Set rsTest = cmdTest.Execute '使用 Command 对象的 Execute 方法得到记录集。 添加记录例一: 使用Recordset对象的Addnew方法 rsTest.open StrSQL,Conn,1,3 rsTest. AddNew '添加新记录,当然,数据的输入可以是通过htm表单提交到asp来 rsTest ("Item")=request("Item") 'rsTest ("Item")="Roae" rsTest ("Name")=request("Name") rsTest ("Size")=request("Size") rsTest ("Weight")=request("Weight") rsTest.update rsTest.close: Cnn.close:set rsTest =nothing:set Cnn=nothing response.redirect(request.servervariables("HTTP_REFERER"))'转回原调用asp的htm网页中 'rsTest.CursorType = adOpenKeySet或adOpenDynamic 第一句效果等同这三句 'rsTest.LockType = adLockOptimistic '更新一条数据可用这个参数,上面用adOpenKeySet即可 'rsTest.Open "运货商",Cnn,,,adCmdTable 添加记录例二:用Connection对象的Execute 添加新数据。使用SQL语句向Access数据库中添加数据时必须使用Insert Into,而向SQL Server数据库中添加数据,使用Insert就可以了。只有当游标类型设为adOpenKeyset或adOpenStatic时,才能使用RecordCount获取总记录数。如果数据库中没有任何数据,就无法使用MoveFirst方法,所以使用前先用rsTest.EOF属性判断数据库中是否有数据。 Dim StrSQL, rsTest StrSQL = "INSERT INTO 运货商 (公司名称,电话) VALUES('wu feng','0571-7227298')" Cnn.Execute StrSQL %> <HTML><BODY><% '第三部分: 将得到的记录集显示到浏览器上 Set rsTest = Cnn.Execute("Select * From 运货商") Do While Not rsTest.EOF………… 修改记录例一:如数据库是Access日期用#55-03-04#括起来;如是SQL Server日期要用'55-03-04'括起来。 Dim StrSQL, rsTest '第二部分: 使用 Connection 对象的 Execute 方法修改数据 StrSQL = "UPDATE 运货商 SET 电话 = '(503) 555-3188' WHERE 电话 LIKE '%99%'" Cnn.Execute StrSQL '"LIKE"、"%"在模糊查询时经常用到,把电话号码改为(503) 555-3188。 修改记录例二:使用 Recordset 对象的 Update 方法。 StrSQL = "SELECT 姓氏,名字,出生日期 FROM 雇员 WHERE 出生日期 = #55-03-04#" rsTest.Open StrSQL, Cnn,,,adCmdText rsTest("名字") = "中文" rsTest.Update '修改当前记录(符合条件的第一条记录) 删除记录例一:使用 SQL 语句。 Dim StrSQL, rsTest StrSQL = "DELETE FROM 运货商 WHERE 电话 = '0571-7227298'" Cnn.Execute StrSQL 删除记录例二:使用 Recordset 对象的 Delete 方法。 Dim StrSQL, rsTest Set rsTest = server.CreateObject("ADODB.Recordset") rsTest.LockType = adLockOptimistic StrSQL = "SELECT * FROM 运货商 WHERE 电话 = '0571-7227298'" rsTest.Open StrSQL, Cnn,,,adCmdText While Not rsTest.EOF rsTest.Delete rsTest.MoveNext Wend '若记录集中有多条记录符合条件,则必须使用循环,否则,Delete方法只删除第一条记录。 批量更新数据:可使提供者将多个记录的更改存入缓存,然后使用 UpdateBatch 方法在单个调用中将它们传送给数据库。缺省为立即更新模式(Update)。使用批更新模式,要使用客户端游标。 Dim StrSQL, rsTest Set rsTest = server.CreateObject("ADODB.Recordset") rsTest.CursorLocation = adUseClient '使用客户端游标类型, 另一个值为adUseServer(默认) rsTest.LockType = adLockBatchOptimistic StrSQL = "SELECT * FROM 运货商 WHERE 电话 LIKE '%99%'" rsTest.Open StrSQL, Cnn,,,adCmdText rsTest.MoveFirst While Not rsTest.EOF rsTest("公司名称") = "中文" rsTest.MoveNext Wend rsTest.UpdateBatch%><HTML><BODY><% '第三部分: 将得到的记录集显示到浏览器上 rsTest.Requery 'Requery方法刷新Recordset 对象全部内容。等于相继调用Close和Open方法。 Do While Not rsTest.EOF Response.Write rsTest(0) & " " & rsTest(1) & " " & rsTest(2) & " " & "<BR>" rsTest.MoveNext Loop '最后关闭数据库。 'Recordset对象的Filter 属性为筛选出符合条件的记录,而其它记录则被过滤掉,可在打开数据后用,如rsTest.Filter = "公司名称 = 'wu feng'"。清除Filter属性:rsTest.Filter="" 读取内容并以列表形式输出: rs.MoveFirst While Not rs.EOF '判断是否过了最后一项,在这句下可以加条件,如:If rs("语文")>=60 Then Row = "<TR>" For i=0 to rs.Fields.Count-1:Row = Row & "<TD>" & rs(i) & "</TD>":Next Response.Write Row & "</TR>" : rs.MoveNext Wend 输出时分页技巧:在打开数据库后: rs为数据库连接,是否连接成功:<% If Not (rs Is Nothing) Then %> <%Myself = Request.ServerVariables("PATH_INFO") rs.PageSize = 10 '一页显示10条记录 Page = CLng(Request("Page")) If Page < 1 Then Page = 1 If Page > rs.PageCount Then Page = rs.PageCount ShowOnePage rs, Page%> '显示第Page页 <DIV ALIGN=right><P><HR><FORM Action=<%=Myself%> Method=GET> <%If Page <> 1 Then ' 如果不是位于第一页%> <A HREF=<%=Myself%>?Page=1>第一页</A><A HREF=<%=Myself%>?Page=<%=(Page-1)%>>上一页</A> <%End If If Page <> rs.PageCount Then%> '如果不是位于最后一页 <A HREF=<%=Myself%>?Page=<%=(Page+1)%>>下一页</A> <A HREF=<%=Myself%>?Page=<%=rs.PageCount%>>最后一页</A> <%End If%> 输入页次:<INPUT TYPE=TEXT Name=Page SIZE=3> 页次:<FONT COLOR="Red"><%=Page%>/<%=rs.PageCount%></FONT></FORM></P></DIV> <%Sub ShowOnePage( rs, Page ) 'Page为要显示第几页 Response.Write "<CENTER><TABLE BORDER=1><TR BGCOLOR=#66CCCC><TD>编号</TD>" For i=0 to rs.Fields.Count-1:Response.WRITE "<TD>" & rs.Fields(i).Name & "</TD>":Next Response.Write "</TR>" '上行为读取表单字段名 rs.AbsolutePage = Page '将记录指针移到第Page页的第一行 For iPage = 1 To rs.PageSize 'rs.PageSize为每页显示的记录数,为变量. Response.Write "<TR>" RecNo = (Page - 1) * rs.PageSize + iPage 'RecNo为每条记录前附加的编号 Response.Write "<TD>" & RecNo & "</TD>" For i=0 to rs.Fields.Count-1 Response.WRITE "<TD>" & rs.Fields(i).Value & "</TD>" Next Response.Write "</TR>" rs.MoveNext If rs.EOF Then Exit For Next Response.Write "</TABLE></CENTER>" End Sub%>

TA的精华主题

TA的得分主题

 楼主| 发表于 2005-1-13 00:11 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
回21楼:可别那样啊,否则我会[em04]了,因为比如在“<HTML><BODY>。。。。”这样的一个句子里,可以说没一个单词是我的原创,更别说大段大段的代码都是他人的智慧了,我只是记录了下来。如果说这里面有原创,那么,穿插的幽默笑话,倒是绝对是原创,可要靠这个弄个什么的,好象我自己这关都过不去呢,何况,版主老大已奖励过了,在此谢谢你们的支持,让我有兴趣理下去了。

TA的精华主题

TA的得分主题

 楼主| 发表于 2005-1-30 17:24 | 显示全部楼层

让你的网页色起来

[分享]网页制做入门

[分享]网页制做入门

[分享]网页制做入门

[分享]网页制做入门

[分享]网页制做入门

[分享]网页制做入门

[分享]网页制做入门

[分享]网页制做入门

TA的精华主题

TA的得分主题

发表于 2005-1-30 17:29 | 显示全部楼层
去你的网站看了,嘿,听用心的嘛.加油!

TA的精华主题

TA的得分主题

 楼主| 发表于 2005-2-1 09:48 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
那不是我的网站,嘿嘿,楼上的误会了,那是我的网络共享硬盘:http://rylane.ys168.com,是可以免费申请的,你们都可以去申请,然后把自己的好东西放在一起给大家分享了。

TA的精华主题

TA的得分主题

发表于 2010-4-24 11:17 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2010-4-27 22:54 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2010-4-29 10:47 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2010-5-1 14:11 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2013-12-15 11:51 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

最新热点上一条 /1 下一条

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-4-19 03:50 , Processed in 0.048107 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表