推奨:ASPを使用して検索エンジン機能に似たコードを作成することについて話しますまず、アクセスデータベースを作成します。ライブラリにはurlindexテーブルがあります。ここでは、次のようにURLとキーワードフィールドがそれぞれ索引付けされています。以下は参照コンテンツです。
オンラインで検索するデータベース操作カテゴリがたくさんあります。私はそれらよりも優れていませんが、私はそれらを自分で書いて、もっと使いました。ですから、私に特別なことは何もありません。私は自分の習慣を使っているだけです。効率やその他の側面については、アドバイスをください! !
プログラムコード:
| 以下は引用されたコンテンツです。 <% クラスdbclass '------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- '変数説明 'conn--------------------------------------------------------------------------------------------------------------------------- 'strsql------------------------------------------------------------------------------------------------------------------------- 'vTbName------------------------------------------------------------------------------------------------------------------------ 'vPKey------------------------------------------------------------------------------------------------------------------------- 'VPGFields ---------ページに表示されるフィールドをクエリします 'vPgSize-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 'vCurrPg----------------------------------------------------------------------------------------------------------------------- 'vconditions ----ページング条件をクエリします 'Vorderby ------------クエリページの並べ替え '------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Private Conn、strsql、vtbname、vpkey、vpgfields、vpgsize、vcurrpg、vconditions、vorderby 'クラスの初期化 private sub class_initialize() 'MS SQLデータベースの場合、次の2つの変数を設定します データベースサーバーの「Dim dbserver」名またはIPアドレス 「Dim dbname」データベース名 dim dbpath 'アクセスデータベースの場合、ここにそのパスを設定します DIM DBUSER 'データベースのログインユーザー名 Dim dbpass 'ドメインのログインパスワード Dim Connstr dbpath = /testasp/data/data.mdb 'データベースパスを設定します dbuser = admin dbpass = 123456 「アクセスしていて、パスワードがある場合 connstr = provider = microsoft.jet.oledb.4.0; data source =&server.mappath(dbpath)&_ ; user id =&dbuser&; password =; jet oledb:データベースパスワード=&dbpass 「アクセスで、パスワードがない場合 'connstr = provider = microsoft.jet.oledb.4.0; data source =&server.mappath(dbpath) 'それがMS-SQLデータベースの場合 'connstr = provider = sqloledb;ユーザーID =&dBuser&;パスワード=&dbpass&_ ';初期カタログ=&dbname&;データソース=&dbserver エラーの再開時に次に再開します conn = server.createObject(adodb.connection)を設定します conn.open connstr errmsgデータベースに接続します End Sub 'クラスエンド private sub class_terminate() conn.close conn =何も設定しません End Sub '------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 'クラスの変数の値を設定します '------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 'SQLステートメントを設定します 公共財産let sqlstr(adval値) strsql =値 プロパティを終了します 'クエリページのテーブル名を設定します 公共財産let tbname(byval値) vtbname = values プロパティを終了します '------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 'クエリページテーブルの主要なキーを設定します 公共財産はpkey(adval Values)を許可します vpkey = values プロパティを終了します '------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- '表示されたフィールドを設定します 公共財産はpgfields(adval Values)を許可します vpgfields = values プロパティを終了します '------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 'ページごとに表示されるレコードの数を設定します 公共財産はpgsize(adval Values)を許可します vpgsize = values プロパティを終了します '------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- '現在表示されているページ数を設定します 公有財産let currpg(adval値) vcurrpg = values プロパティを終了します '------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 'クエリ条件を設定します 公共財産賃金条件(バイバル価値) len(values)> 0の場合 vconditions = where&values それ以外 vconditions =ここで1 = 1 ifを終了します プロパティを終了します '------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 'クエリの種類を設定します 公共財産let orderby(バイバル価値) len(values)> 0の場合 Vorderby = Order By&Values それ以外 Vorderby = values ifを終了します プロパティを終了します '------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 'レコードの総数を取得します 公共財産get vrscount() vcurrpg = 1の場合 sqlc = select count(&vpkey&)as idcount from&vtbname&&vconditions rsc = server.createObject(adodb.Recordset)を設定します rsc.open sqlc、conn、0,1 rsnum = rsc(idcount) rsc.close rsc =何も設定しません rsnum> 0の場合 Response.Cookies(iRecord)= rsnum vrscount = rsnum それ以外 vrscount = 0 ifを終了します それ以外 vrscount = request.cookies(irecord) ifを終了します プロパティを終了します 'ページの総数を取得します 公共財産get vpgcount() irscount2 = vrscount() Irscount2 mod vpgsize = 0の場合 vpgcount = int(irscount2/vpgsize) それ以外 vpgcount = int(irscount2/vpgsize)1 ifを終了します プロパティを終了します 'データベースをクエリします パブリック関数rsdb() エラーの再開時に次に再開します '単純なクエリの結果 'set rsdb = server.createObject(adodb.Recordset) 'rsdb.open strsql、conn、1,3 rsdb = conn.execute(strsql)をset ERRMSGクエリデータベース エンド関数 '追加、更新、データベースレコードを削除します パブリック関数updb() エラーの再開時に次に再開します conn.execute(strsql) ERRMSG編集データベースレコード エンド関数 '------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 'ページングの実装に使用されるレコードセット関数 パブリック関数ポケット() エラーの再開時に次に再開します 薄暗い星 startrs =(vcurrpg-1)*vpgsize '------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 「このステートメントを使用する場合、パラメーターに従ってコードを変更する必要があります。具体的には、ソートがASCの場合、<変更>、およびminがmaxに変更されます 'Startrs = 0の場合 'strsql = Top&vpgsize&&&vpgfields&from&vtbname&&vconditions&&vorderbyを選択します ' それ以外 'strsql = top&vpgsize&&vpgfields&from&vtbname&&vconditions&&&vpkey&< 'strsql = strsql&(select min(&vpkey&)from(select top&startrs&&&vpkey&from 'strsql = strsql&vtbname&&vconditions&&vorderby&)idtable)&vorderby 'end if '------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- startrs = 0の場合 strsql = top&vpgsize&&&vpgfields&from&vtbname&&vconditions&&vorderbyを選択します それ以外 strsql = Top&vpgsize&&vpgfields&fromを選択 strsql = strsql&in(Select top&Startrs&&&vpkey&from&vtbname&&vconditions&&vorderby strsql = strsql&)&vorderby ifを終了します '------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- pagers = server.createObject(adodb.Recordset)を設定します pagers.open strsql、conn、0,1 errmsgレコードページネーション エンド関数 '------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- パブリック関数sqlpage() エラーの再開時に次に再開します sqlpage = server.createObject(adodb.Recordset)を設定します cm = server.createobject(adodb.command)を設定します cm.commandtype = 4 cm.activeconnection = conn cm.commandtext = sp_util_page cm.parameters(1)= vpgfields cm.parameters(2)= vtbname cm.parameters(3)= vconditions cm.parameters(4)= vorderby cm.parameters(5)= vpkey cm.parameters(6)= vcurrpg cm.parameters(7)= vpgsize cm.parameters(8)= vrscount() cm.parameters(9)= sqlpage.cursorlocation = 3 sqlpage.locktype = 1 sqlpage.open cm errmsgレコードページネーション エンド関数 '------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 'レコードセットのobjrsを閉じます '------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- パブリック関数CRS(byval objrs) objrs.close() objrs =何も設定しません エンド関数 '------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- パブリック関数pagenav() irscount = vrscount() 'レコードの総数 mypage = vcurrpg'currpg'currpg'currentページcount pgcount = vpgcount() 'ページの総数 prepage = mypage-1 prepage <1 thenの場合 prepage = 1 ifを終了します NextPage = MyPage 1 NextPage> pgcountの場合 nextPage = pgcount ifを終了します pagestr = <div id = fy> <span id = rpc>合計&irscount&records&mypage&/&pgcount&</span>があります pagestr = pagestr&<a href = '?currpage = 1' class = 'aw'> home </a> <a href = '?currpage =&prepage&' class = 'aw'>前のページ</a> if(mypage-1)mod 4 = 0 then firstPage = myPage elseif int((mypage-1)/4)= 0 then FirstPage = 1 それ以外 firstPage = int((mypage-1)/4)*4 1 ifを終了します endpage = FirstPage 4 astr = i = firstpage to endpageの場合 astr = astr&<a href = '?currpage =&i&' CSTR(myPage)= cStr(i)thenの場合 astr = astr&id = 'currp' ifを終了します ASTR = ASTR&>&i&</a> i> pgcount-1の場合は、 次 ASTR = ASTR&<a href = '?currpage =&nextpage&' class = 'aw'>最後のページ</a> <a href = '?currpage =&' class = 'aw'>最後のページ</a> </div> pagestr = pagestr&astr pagenav = pagestr エンド関数 'ページング機能を備えた出力テーブル function showtb(byval tbtil) rstb = pagers() 'setがストアドプロシージャの場合は、sqlpage()を呼び出します tbrs = rstb.getRows() CRS(RSTB) itblrow = ubound(tbrs、2) itblcol = ubound(tbtil) TBSTR = <table border = '0' cellpacing = '0' cellpadding = '0' cellpadding = '0'> <tbody> R1 = 0からITBLCOLの場合 TR1 = TR1&<TD width = '&split(tbtil(r1)、|)(1)&'>&split(tbtil(r1)、|)(0)&</td> 次 tr1 = <tr>&tr1&</tr> ri = 0からiTblrowの場合 ci = 0からiTblcolの場合 td = td&<td width = '&split(tbtil(ci)、|)(1)&'>&tbrs(ci、ri)&</td> 次 tr = tr&<tr>&td&</tr> TD = null 次 tbtil = null tbrs = null Response.Write(TBSTR&TR1&TR1&<TR> <TD COLSPAN = '&ITBLCOL 1&'>&pagenav()&</td> </tr> </tbody> </table>) tbstr = null TR1 = null TR = null エンド関数 'SQLステートメントを印刷して、ステートメントがエラーがあるかどうかを確認するようにします public sub prnsql() respons.write(strsql) End Sub '------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 'フォールトトレラント機能 '------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- プライベート関数errmsg(errmsg) err.number <> 0の場合 「問題がある場合は、こちらのコードを使用して説明情報を印刷して簡単にデバッグできます。コメントしてください respons.write(cstr(err.description)&<br>) err.clear respons.write <font color = '#ff0000'>&errmsg&error </font> 'コメント Response.End() ifを終了します エンド関数 '------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- '障害トレランス関数は終了します '------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- エンドクラス %> |
共有:FilesystemObjectサンプルコードこのセクションで説明したサンプルコードでは、FilesystemObjectオブジェクトパターンで利用可能な多くの機能を説明するために、実際の例を示しています。このコードは、オブジェクトパターンを一緒に使用する方法のすべての機能と、独自のコードで効果的に使用する方法を示しています