仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1078|回复: 8
打印 上一主题 下一主题

[学习教程] MYSQL网站制作之用 Access 剖析网站一例

[复制链接]
小魔女 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:46:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
甚至一个有经验的Windows管理者也可以轻松部署并开始学习它,而你不需投入一分钱来了解这个数据库。access
用Access剖析网站一例





成绩:

怎样用Access剖析一个网站,大概在网站上提交一个查询,失掉了局后存储进数据库哪?
怎样用Access下载DVBBS论坛上一切的帖子?
怎样用ACCESS编写注水程序?




办法一:

谜底十分复杂――DHTML编程。
有人大概问了,ACCESS利用的是VBA,而DHTML中利用的是VBS怎样大概通用哪?实在VBS/VBA都是VB的子集。在Access中只需援用


MicrosoftInternetControls
MicrosoftHTMLObjectLibrary

便可,然后在窗体上到场“MicrosoftWeb扫瞄器”控件

好了,上面就以我写的一个读取某IP物理地区查询网站页面的数据库为例申明DHTML/“MicrosoftWeb扫瞄器”控件在ACCESS的使用吧。

“MicrosoftWeb扫瞄器”控件的感化是甚么哪?次要就是为了取得DOCUMENT工具的,DHTML的操纵都是以DOCUMENT工具为运转基本的。

要完成读取网页的功效我们必需懂得DHTML的几个复杂的工具和属性
1、DOCUMENT工具:代表这全部HTML文档
2、BODY工具:是DOCUMENT工具的子工具,内里存储着一切显现给用户看的HTML代码
3、innerText属性:页面中显现给客户看的文本,注重:不是HTML代码呦
4、innerHTML属性:组成页面的HTML代码
5、工具.all.length属性:页面中一切element的个数。(all用于暗示一切工具)

ok,接上去就让我们一边写代码,一边剖析吧:
OptionCompareDatabase
DimblnSwitchAsBoolean
PrivateSubCommand1_Click()用于启动扫瞄功效
Me.WebBrowser3.Navigate("http://ip.loveroot.com/index.php?job=search")
EndSub


PrivateSubCommand11_Click()将必要搜刮的IP写进全局变量
splitIPText1.Value
EndSub
FunctionsplitIP(strip)将必要搜刮的IP写进全局变量
Dima()AsString
strip=strip&"."
a=Split(strip,".")

DimiAsLong
Fori=0ToUBound(a)
Ifa(i)=""Thena(i)="0"
lngSearchIP(4-i)=CLng(a(i))
Nexti

EndFunction

SubWriteLog(ip1AsString)读取了局
DimdcAsMSHTML.HTMLDocument
DimBdAsMSHTML.HTMLBody
DimElAsMSHTML.HTMLElementCollection
DimstripAsString
DimstrAddAsString
DimstrSql
DimiAsLong
Setdc=WebBrowser3.Document
SetBd=dc.body

DimlngStartAsLong

轮回DOCUMENT中一切的元素猎取必要的字符
Fori=0Todc.all.length-1
因为该服务重视写界面,我改了一下剖析代码
Ifdc.all(i).tagName="p"AndLeft(dc.all(i).innerText,4)="查询了局"Then
Ifdc.all(i).tagName="p"AndLeft(dc.all(i).innerText,8)="官方数据查询了局"Then
因为该服务重视写界面,我改了一下剖析代码
strAdd=Mid(dc.all(i).innerText,InStr(1,dc.all(i).innerText,"(")+2,InStr(1,dc.all(i).innerText,")")-InStr(1,dc.all(i).innerText,"(")-3)
strip=Mid(dc.all(i).innerText,InStr(1,dc.all(i).innerText,"查询了局:")+6,InStr(1,dc.all(i).innerText,"(")-InStr(1,dc.all(i).innerText,"查询了局:")-7)
strAdd=Right(dc.all(i).innerText,Len(dc.all(i).innerText)-InStr(dc.all(i).innerText,"-")-3)
strip=strNowIP
LabelSIP.Caption=strip&strAdd
ok终究失掉必要的数据了,用SQL语句间接写进数据库吧
strSql="updateipaddressset[ip1]="&strip&",[add]="&strAdd&"wheremark=last"
CurrentProject.Connection.ExecutestrSql
strSql="insertintoipaddress([ip1],[add],[mark],[enip])values("&strip&","&strAdd&",no,"&CStr(enaddr(strip))&")"
CurrentProject.Connection.ExecutestrSql
ExitFor
EndIf
Nexti

DimstrNewIPAsString
strNewIP=refreshIP
OnErrorResumeNext
使用DHTML的innerHTML来变动网页的源代码,创建一个复杂的FORM,然后提交给服务器,持续查询上面的IP
Bd.innerHTML="<formmethod=POSTaction=index.php?job=searchtarget=_parent><inputtype=textname=search_ip><inputtype=submitvalue=查询name=B1></form>"
在INPUTTEXTsearch_ip中填进IP。
dc.all.Item("search_ip").Value=strNewIP
用DHTML提交FORM到服务器
dc.all.Item("b1").Click
EndSub

PrivateSubForm_Open(CancelAsInteger)
Text1.Value=Nz(DLookup("ip1","ipaddress","[mark]=last"&Me.Caption&""),"1.0.0.0")

EndSub

PrivateSubWebBrowser3_DownloadComplete()
该事务在页面乐成下载到当地时运转,这时候候DOCUMENT工具
已完整被客户端扫瞄器读取了,我们只需猎取Body工具中的innerHTML便可
IfLen(strNowIP)=0Then
splitIPText1.Value
EndIf

Ifcheck1.Value=TrueThen
CallWriteLog("61.12.15.117")
EndIf
EndSub

FunctionrefreshIP()AsString搜刮完一个IP今后再搜刮上面一个
DimiAsLong
lngSearchIP(2)=lngSearchIP(2)+1
Fori=2To4
IflngSearchIP(i)>=256Then
lngSearchIP(i)=0
lngSearchIP(i+1)=lngSearchIP(i+1)+1
EndIf
Nexti
refreshIP=Format(lngSearchIP(4),"0")&"."&Format(lngSearchIP(3),"0")&"."&Format(lngSearchIP(2),"0")&"."&Format(lngSearchIP(1),"0")
strNowIP=refreshIP
Debug.PrintrefreshIP
EndFunction





以下代码请新建一个模块后COPY出来
OptionCompareDatabase
PubliclngSearchIP(4)AsLong
PublicstrNowIPAsString
PublicstrOKAddressAsString
PublicstrOKIPAsString
PublicblnStopAsBoolean
FunctionwriteOKIP()
DimrsAsNewADODB.Recordset
DimstrSqlAsString

strSql="select*fromipaddressorderbyenip"
rs.OpenstrSql,CurrentProject.Connection,1,1

DimstrAdd1AsString
DimstrIP1AsString
DimlngENIP1AsLong
DimstrStateAsString
strState="start"

DimiAsLong
DimiAAsLong
iA=rs.RecordCount

DoUntilrs.EOF
IfblnStop=TrueThenExitFunction
IfstrAdd1rs("add")Then
strSql="updateipaddress_oksetip2="&strIP1&",enip2="&Str(lngENIP1)&",mark=wheremark=setting"
CurrentProject.Connection.ExecutestrSql
DoEvents
strSql="insertintoipaddress_ok(ip1,enip1,[mark],[add])values("&rs("ip1")&","&Str(rs("enip"))&",setting,"&rs("add")&")"
CurrentProject.Connection.ExecutestrSql
DoEvents
EndIf

strAdd1=rs("add")
strIP1=rs("ip1")
lngENIP1=rs("enip")
i=i+1
Form_把持.Label4.Caption=Str(Int(i/iA*10000)/100)&"%"
rs.MoveNext
Loop
rs.Close

strSql="updateipaddress_oksetip2=mid(ip2,1,len(ip2)-2)&255"
CurrentProject.Connection.ExecutestrSql
strSql="updateipaddress_oksetenip1=enaddr(ip1)"
CurrentProject.Connection.ExecutestrSql
strSql="updateipaddress_oksetenip2=enaddr(ip2)"
CurrentProject.Connection.ExecutestrSql
EndFunction


Functionenaddr(SipAsString)AsDouble
用代办署理没法毗连的成绩还要办理
将字符的IP编码为长整的IP
OnErrorResumeNext
Dimstr1AsString
Dimstr2AsString
Dimstr3AsString
Dimstr4AsString
Sip=CStr(Sip)
str1=Left(Sip,CInt(InStr(Sip,".")-1))
Sip=Mid(Sip,CInt(InStr(Sip,"."))+1)
str2=Left(Sip,CInt(InStr(Sip,"."))-1)
Sip=Mid(Sip,CInt(InStr(Sip,"."))+1)
str3=Left(Sip,CInt(InStr(Sip,"."))-1)
str4=Mid(Sip,CInt(InStr(Sip,"."))+1)
enaddr=CLng(str1)*256*256*256+CLng(str2)*256*256+CLng(str3)*256+CLng(str4)-1
EndFunction

Functiondeaddr(Sip)
将编码为长整的IP重现转换为字符型的IP
Dims1,s21,s2,s31,s3,s4
Sip=Sip+1
s1=Int(Sip/256/256/256)
s21=s1*256*256*256
s2=Int((Sip-s21)/256/256)
s31=s2*256*256+s21
s3=Int((Sip-s31)/256)
s4=Sip-s3*256-s31
deaddr=CStr(s1)+"."+CStr(s2)+"."+CStr(s3)+"."+CStr(s4)
EndFunction



示例请参考:http://access911.net/down/eg/User_DHTML_search_IP.rar

上述程序会主动往http://ip.loveroot.com/index.php?job=search搜刮一切的IP和对应的物理地点并保留到数据库中

订正:方才上了一下网站,发明界面居然改了,又从头修正了一下读取页面的程序。

关于WebBrowser控件的材料请参考VB6中MSDN的以下章节
InternetClientSDK
InternetTools&Technologies
ReusingtheWebBrowserandMSHTML

inet401/help/itt/ieprog/IEProg.htm#book_browsing(BOOKMARK)







http://access911.net站长保藏
一个相关的问题是第三方支持的资格问题,尽管直接来自厂商的支持和服务可以一定程度上减缓这个问题,但是,对于有的企业来说,通过强有力的本地化支持显然更有吸引力。
乐观 该用户已被删除
沙发
发表于 2015-1-19 23:08:19 | 只看该作者
不好!如果出了错;不好调试;不好处理!其实web开发将代码分为3层:web层;业务逻辑层和数据访问层;一般对数据库的操作都在数据访问层来做;这样便于调试和维护!而且将来如果是换了数据库的话;你只需要改数据层的代码;其他层的基本可以不变!要是你在jsp中直接调用sql数据库;那么如果换了数据库呢?岂不都要改?如果报了异常呢?怎么做异常处理?
飘灵儿 该用户已被删除
板凳
发表于 2015-1-28 15:06:04 | 只看该作者
无法深入到数据库系统层面去了解和探究
若天明 该用户已被删除
地板
发表于 2015-2-5 21:48:13 | 只看该作者
可能有的朋友会抱怨集成的orderby,其实如果使用ranking函数,Orderby是少不了的。如果担心Orderby会影响效率,可以为orderby的字段建立聚集索引,查询计划会忽略orderby操作(因为本来就是排序的嘛)。
小女巫 该用户已被删除
5#
发表于 2015-2-13 18:30:33 | 只看该作者
我是一个ERP初学者,对于前台运用基本熟悉,但对于后台SQLServer的运用一点也不懂,特想学习下相关资料。至少懂得一些基本的运用。希望各位能给于建议,小弟再谢过!
不帅 该用户已被删除
6#
发表于 2015-3-4 01:06:09 | 只看该作者
是要和操作系统进行Socket通讯的场景。否则建议慎重!
admin 该用户已被删除
7#
发表于 2015-3-11 15:09:08 | 只看该作者
始终遗憾SQLServer的登陆无法分配CPU/内存占用等指标数。如果你的SQLServer给别人分配了一个只可以读几个表的权限,而这个家伙疯狂的死循环进行连接查询,会给你的系统带来很大的负担。
谁可相欹 该用户已被删除
8#
发表于 2015-3-19 00:52:05 | 只看该作者
varchar(max)\\\\nvarchar(max)类型的引入大大的提高了编程的效率,可以使用字符串函数对CLOB类型进行操作,这是一个亮点。
活着的死人 该用户已被删除
9#
发表于 2015-3-27 00:09:29 | 只看该作者
大侠们有推荐的书籍和学习方法写下吧。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-5-3 16:28

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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