推奨:SQL-DMOを使用して、バックアップと検証ASPアプリケーションを作成します概要SQL分散管理オブジェクト(SQL-DMO)は、プログラムとスクリプト言語を使用して通常のタスクを実行する方法を開発者に提供し、SQL Serverの機能を拡張します。この記事では、SQL-DMOを巧みに使用して作成する方法について説明しています
1。ステートメントを選択します
SQLの世界では、最も基本的な操作はSelectステートメントです。 SQLをデータベースツールで直接使用する場合、多くの人が次の操作に精通しています。
| 以下は引用されたコンテンツです。 何を選択します whathtableから ここで基準 |
上記のステートメントを実行すると、結果を保存するクエリが作成されます。
ASPページファイルでは、上記の一般的な構文を使用することもできますが、状況はわずかに異なります。 ASPをプログラミングする場合、Selectステートメントのコンテンツは、文字列として変数に割り当てる必要があります。
| 以下は引用されたコンテンツです。 sql = whathtableの基準から何を選択します |
さて、私はSQLがASPの下でどのように話すかを理解し、それを同じようにします。ニーズを満たしている限り、従来のSQLクエリモードと条件付きクエリが役立ちます。
たとえば、データベースにデータテーブル、つまり製品があると仮定すると、この表のすべてのレコードを取得することもできます。次に、次のコードを書きました。
| 以下は引用されたコンテンツです。 sql = select * from製品 |
上記のCode-SQLステートメントの機能は、テーブル内のすべてのデータを取得することです。実行後、データテーブル内のすべてのレコードが選択されます。ただし、P_NAMEなどの特定の列をテーブルから削除する場合のみ。その後、 *ワイルドカード文字を使用できません。特定の列の名前を入力する必要があります。コードは次のとおりです。
| 以下は引用されたコンテンツです。 SQL =製品からp_nameを選択します |
上記のクエリを実行した後、製品テーブルとP_NAME列のすべてのコンテンツが選択されます。
2.句のクエリ条件を設定します
たとえば、P_NAMEレコードを取り出すことのみを計画している場合、およびこれらのレコードの名前を文字Wで開始する必要がある場合は、次の場合は次の場合を使用する必要があります。
| 以下は引用されたコンテンツです。 sql = p_nameが「w%」が好きな製品からp_nameを選択します |
キーワードの後に、データのフィルタリングに使用される条件が続きます。これらの条件の助けを借りて、特定の標準を満たすデータのみが質問されます。上記の例では、クエリの結果は、wで始まる名前のp_nameレコードのみを取得します。
上記の例では、パーセンテージシンボル(%)は、クエリがW文字で始まり、データまたはデータなしで続くすべてのレコードエントリを返すことを意味します。したがって、上記のクエリを実行すると、WestとWillowが製品テーブルから選択され、クエリに保存されます。
ご覧のとおり、Selectステートメントを注意深く設計するだけで、レコードセットで返される情報の量を制限し、常に要件を満たすと考えることができます。
これらは、SQL使用法のマスターの始まりに過ぎません。複雑な選択ステートメントの使用を徐々に習得するために、重要な標準用語:比較演算子を見てみましょう。これらのことは、特定のデータを取得するために独自の選択文字列を構築するときによく使用されます。
条項の基本
Where句の作成を開始するとき、最も簡単な方法は標準比較シンボルを使用することです。明らかに、次のコードの意味と具体的な結果をすぐに理解するでしょう。
| 以下は引用されたコンテンツです。 [P_PRICE]> = 199.95を選択します [P_PRICE <> 19.95を選択]を選択します [p_version = '4'を選択]を選択します |
注:ここでは、最後の例の4番目が単一の引用符に囲まれていることに気付くでしょう。その理由は、この例では、4は数値タイプではなくテキストタイプであるためです。
3。比較演算子:好みではなく、その間
比較演算子は、テーブルからデータが取得されるコンテンツ範囲を指定します。それらを使用してフィルターを作成してレコードセットの範囲を絞り込み、特定のタスクで気にかけている情報のみを保存します。
上記のWのヘッダーレコードを取り出した例では、同様の使用法を見てきました。同様の決定要因は非常に便利なシンボルです。ただし、多くの場合、それを使用するとデータが多すぎる可能性があるため、脳を使用して使用する前に取得したいデータについてもっと考えることが最善です。 5桁のSKU番号を取り出したいと仮定し、その始まりは1で終了すると、%シンボルの代わりにアンダースコア(_)を使用できます。
sql = select * p_skuが「1___5」のような製品から
アンダースコアは任意のキャラクターを表します。したがって、1___5を入力すると、検索は特定のモードを満たす5桁の範囲に制限されます。
反対のことをしたい場合は、1___5モードと一致しないすべてのSKUエントリを見つけてください。次に、ステートメントの例では今すぐ追加する必要があります。
間
特定の範囲内でデータを抽出すると、事前に範囲の開始点とエンドポイントがわかっていると仮定し、判断語の間を使用することもできます。次に、特定のテーブルに1〜10の範囲のレコードを選択すると仮定します。次のように使用できます。
…1〜10のID
または、おなじみの数学的判断文を使用することもできます。
…ここで、id> = 1およびid> = 10
4。共同声明
これまでに説明したSQLステートメントは比較的簡単です。標準のレコードセットループクエリに合格できる場合、これらのステートメントは、より複雑な要件を満たすこともできます。しかし、なぜあなたはそれを試してみるだけの基本的なレベルに固執する必要があるのですか?より強力な関数を完了するために、その他、またはそうでない他のシンボルを追加できます。
次のSQLステートメントは例です。
| 以下は引用されたコンテンツです。 sql = select c_firstname、c_lastname、c_email c_emailがnullおよびc_purchase = '1'またはc_purchase = '2'、c_lastname '' like 'a%'を選択します |
現在持っているSQLの知識を使用すると、上記の例を説明するのは難しくありませんが、上記のステートメントでは、条件文が単一のSQLステートメントにどのように接着されているかを明確にすることはできません。
複数の行のステートメント
SQLステートメントが理解しやすい場合は、ステートメント全体を複数のコード行に分解し、既存の変数に基づいてクエリステートメントのさまざまなコンポーネントを徐々に追加して、同じ変数に保存することもできます。
| 以下は引用されたコンテンツです。 sql = select c_firstname、c_lastname、c_emailaddress、c_phoneを選択します sql = sql&from Customers sql = sql&where c_firstname 'a%'およびc_emailaddress not null sql = sql&order by c_lastname、c_firstname |
最後の文では、SQL変数には次の完全な選択ステートメントが含まれています。
| 以下は引用されたコンテンツです。 c_firstname、c_lastname、c_emailaddress、c_phoneを顧客からc_firstnameが「a%」とc_emailaddress no null orders by c_lastname、c_firstname |
上記の文全体を分解した後、読みやすくなります!デバッグするときは、プログラムを変更してよりよく読むために、さらにいくつかのキャラクターを入力することを喜んでいるかもしれません。ただし、引用符を閉じる前に、または引用符を開いた後にスペースを追加する必要があることを覚えておく必要があります。そうすれば、文字列が接続されているときにいくつかの単語をまとめないようにします。
5。実行を開始します
選択されたステートメントの構築と使用を学んだ後、それらを使用する方法を学ぶ時が来ました。持っているデータベースツールの下では、「実行」という単語でボタンを押す必要があることを意味する場合があります。 ASP Webページでは、SQLステートメントをすぐに実行することも、ストアドプロシージャと呼ばれます。
SQLステートメントが作成されたら、クエリの結果にアクセスしようとする必要があります。明らかに、ここでの重要なのはASP Recordsetです。あなたがよりよく知っているSQLスキルを最大限に活用するには、通常のASP Webページで最も一般的に使用されるレコードセットを調整する必要があります。
| 以下は引用されたコンテンツです。 薄暗いrs rs = server.createObject(adodb.Recordset)を設定します rs.open sql、conn、1,2 |
Connはデータベース接続宣言であり、唯一の変更は、SQLステートメントを含む変数を使用して、照会するデータテーブルの名前を置き換えることです。
このアプローチの利点の1つは、カーソルタイプを指定できることです(上記1および2に示すように)。
SQLを実行します
コンパクトなコードラインを使用してレコードセットを作成して、SQLステートメントを実行することもできます。以下は構文です。
薄暗いrs
rs = conn.execute(sql)を設定します
上記の例では、表示されるSQLは、独自のSQL Selectステートメントを保存する変数です。このコード行は、SQLステートメント(またはデータベースをクエリ)し、データを選択し、上記の例ではデータをレコードセットに保存します。このアプローチの主な欠点は、使用するカーソルのタイプを選択できないことです。代わりに、レコードセットは常に前方のカーソルで開かれます。
カーソルのため、レコードセットを作成する2つの方法に精通している場合があります。クエリを実行すると、文字を入力するのに費やした時間を直接節約できますが、その場合、通常は正常に機能しない場合があるデフォルトのカーソルを使用する必要があります。どの方法を使用しても、この2つの最大の違いは、コードが洗練されているかどうかにすぎません。どのフィールドや標準が何であるかを考慮せずに、およびデータの保存方法に関係なく、SQLスタイルのレコードセットを使用すると、操作の容易さは言うまでもなく、ASPで開かれた標準のレコードセットよりもサイズがはるかに小さくなります。結局のところ、データをフィルタリングすることにより、時間のかかるテストと可能なループを排除します。
6。クエリを保存します
クエリが比較的単純な場合、毎回SQLステートメントをゼロから作成するのにそれほど労力はかかりません。ただし、複雑なクエリは異なります。ゼロから始めるたびに、多くの開発エラーが生成されます。したがって、SQLがスムーズに実行されたら、必要に応じてそれらを保存して電話した方が良いでしょう。このようにして、簡単なクエリも使用して、いつでもクエリステートメントを保存できます。
データベースから選択する必要がある現在のビジネスサポートの問題を示すために、週に一度チームに報告する必要があり、レコードは日付で選択し、使用しているサポートの問題のカテゴリに従ってソートする必要があるとします。このクエリを設計したら、なぜ1週間後にそれを書き直さなければならないのですか? HTMLページでクエリを作成しないでください。データベースツールでクエリを作成して保存する必要があります。次に、ActiveCommandプロパティを使用して、クエリをASPページに挿入できます。 1、2回では無意味になるかもしれませんが、実際にはコードのほんの数行です。
| 以下は引用されたコンテンツです。 objsq = server.createobject(adodb.command)を設定します objsq.activeconnection = databasename objsq.commandtext = storedqueryname objsq.commandtype = adcmdstoredproc objrec = objsq.executeを設定します |
ADCMDSTOREDPROCを使用すると、ページにadovbs.incファイルを含めたことがあることに注意してください。このファイルは、番号ではなく名前でアクセスできるアクセス定数を定義します。ページにファイルを含めるだけで、ADCMDSTOREDPROCを使用できます。このようにして、将来的にそれを見たときに、上記のクエリが何を意味するかを理解する方が簡単になります。
7。注文
アクセスデータベースから最も嫌なものを選択すると、入力された順序でデータベースに入力されます。アクセス環境で並べ替えを使用してレコードビューを変更したとしても、データテーブルのレコードの順序は変更されていません。
ASP Recordsetを使用してWebページにレコードを作成している場合、混乱に陥るのがどれほど痛いかを知っているかもしれません。しかし、簡単で便利な解決策がないため、この問題に頻繁に直面する必要があるかもしれません。幸いなことに、注文はこの問題を簡素化できます。
結果を並べ替えるには、Selectステートメントの最後に注文を追加し、ソートする必要がある参照列を指定するだけです。したがって、顧客の姓で顧客テーブルを並べ替えたい場合は、次のクエリステートメントを書くことができます。
sql = c_lastname、c_firstname、c_email from customer by c_lastnameを選択します
このようにして、レコードセットを作成して画面に結果の書き込みを開始する限り、データがアルファベット順に配置されていることがわかります。
以下は、テーブルの操作です。
表Aの構造をテーブルBにコピーするだけです(コピーデータなし)
| 以下は引用されたコンテンツです。 sql = select * into bからbから1 <> 1 sql = select * into b from a where 1 = 0 |
表Aの構造とデータをテーブルBにコピーする
| 以下は引用されたコンテンツです。 sql = select * into bからa |
共有:ASP 3.0高度なプログラミング(45)非同期実行とは、バックグラウンドでデータを取得することを指し、取得したデータをすべてのデータを返す前にWebページで使用できます。すべてのデータが必要になる場合がありますが、非同期作業は少なくとも事前にデータの処理を開始できます。また、ユーザーが最初に特定のコンテンツを表示できるようにすることもできます。これにより、Webサイトが作成されます