1. ホーム
  2. Web プログラミング
  3. プログラミング10000問

ASP Q&A集

2022-02-15 11:25:56
Q: なぜ私のレコードセットの RecordCount 値はいつも -1 を返すのですか? 
A: このスキーマは、データベースにアクセスするレコードセットを開くために使用する必要があります。 
     rec.open strSQL,conn,1,1 
     strSQLはデータベースを操作するSQL文、connはデータベースに接続するためのConnection変数。 
Q: ASPスクリプトにコメントをたくさん書いていますが、ASPファイルを処理するサーバーの速度に影響しますか? 
A:コメントが多すぎるASPファイルについては、全体のパフォーマンスが0.1%低下するだけですので、基本的にはサーバーのパフォーマンスには影響しません。 
Q:各ASPファイルの冒頭で使用する必要があるのでしょうか? 
A: スクリプト言語としてVBScriptを使用している場合は、この記述を使用しないようにしてください。そうしないと、プログラム全体のパフォーマンスが1.2%近く低下します。しかし、VBScript以外の言語を使用している場合は、この記述を使用してください。 
Q: すべての ASP ファイルで "Option Explicit" を使用する必要がありますか? 
A: そうです。エラーの可能性を最小限に抑え、全体のパフォーマンスを約9.8%向上させることができるからです! 
Q:最近IIS5.0に搭載されたASP3.0は何が新しくなったのでしょうか? 
A: 特に新しいものはありませんが、Serverオブジェクトのための新しいメソッドが2つ追加されました。
Server.Transfer と Server.Excute と、新しいオブジェクト ASPError があります。使い方の詳細は、マイクロソフト社のWebサイト www.microsoft.com を参照してください。 
Q: Response.Redirectを使用するとエラーが発生するのはなぜですか? 
A: 最も一般的な理由は、ページを書き込んだ後にHTTPタイトルを変更したことです。解決策としては   
Q: Redirectメソッドは同じフレームにしかリダイレクトされないようですが、他のフレームにリダイレクトすることは可能ですか? 
A: はい、できます。このように追加します。そうすると
Redirectメソッドでは、FrameNameという名前のフレームにリダイレクトされます。 
Q: Window.open()"メソッドで開いた新しいウィンドウのASPページでSessionがよく失われるのはなぜですか? 
A: マイクロソフトIE4.xでよく起こる現象ですが、IE5.xではこのエラーは修正されています。ですから、すべてのブラウザに対応するために、ウィンドウ間のパラメータ受け渡しに "test.asp?name=xxx" などを使用するとよりうまくいきます。ただ、渡されたパラメータが重要であれば、平文で渡さないように注意してください。そうしないと簡単にセキュリティ問題に発展してしまうのですから。 
Q: データベースのリンク方法として、DSNとDSN-LESSの2種類をよく見かけますが、これらはどういう意味ですか?何か違いがあるのでしょうか?
A:DSNは英語のquot;Data Source Name"の略語で、DSNの方法はデータソース接続の使用で、データソースはコントロールパネルのquot;ODBCデータソース"の中に設定でき、次にこのように使用することができます。 
Conn.Open "DSN=Test;UID=Admin;PWD=;"。 
ここで、"Test"は、自分で設定したデータソースの名前です。UIDとPWDの両方を使用しないと、エラーが発生することに注意してください。 
同様に、DSN-LESSはデータソースではないリンク方法であり、以下のように使用されます。 
Conn.Open "ドライバ={Microsoft Accessドライバ 
(*.mdb)};Dbq=Thinksomepath Thinkmydb.mdb;Uid=Admin;Pwd=;" 
DSN-LESS方式は、同じハードウェア環境であればDSN方式よりも高いパフォーマンスを発揮しますが、何らかのセキュリティ上の問題から一度ASPのソースコードに他人がアクセスすると、データベースのアカウントやパスワードが漏れてしまうので、どちらの方式にも一長一短があると言えます。 
Q: ASPでADOのAddNewメソッドを使うのと、"Insert into..."ステートメントを直接使うことの違いは何ですか? ASPでステートメントを使う場合、どのような違いがありますか?より良い方法は何ですか? 
A: ADOのAddNewメソッドは、単に"Insert into"文をカプセル化しているだけなので、大量のデータを操作する場合は、SQL文を直接使用すると、ADOの翻訳時間を短縮できるので、データへのアクセスを大幅に高速化することができます。SQL文は、AddNewのような文ほど簡単には受け入れられませんが、いくつかの一般的なSQL文を学ぶことは、データベースプログラミングを行う上で非常に重要なことです。 
Q: この文("Let's go now!")をデータベースに挿入すると、なぜエラーが発生するのでしょうか? 
A: ほとんどのデータベース(Access、MS SQL Server)では、シングルクォートをセパレータとして使用しているため、シングルクォートを直接データベースに挿入することはできません。SQL文を実行する前に、それぞれのシングルクォートを2つの別々のシングルクォートに置き換える必要があります。 
MyData=Replace(MyData," ' "," '' ",1) で、あとはデータベースに保存するだけです。
1. 質問です。ASPはプログラミング言語なのか?
  A:ASPはプログラミング言語ではなく、開発環境の一つです。ASPはサーバー側でコマンドを実行する環境を提供します。HTMLと、サーバーで翻訳してからクライアントに送信するコマンドを区別するために、特別な表記()を使用しています。HTML言語、Microsoft VBScript、Microsoft Jscriptなどのコマンドを実行することができ、強力なWebアプリケーションを制作することができる。
2. 質問です。PWSを使用して、1つのWebサーバーに複数のWebサイトを収容することはできますか?
  A:PWSに収容できるWebサイトは1つだけです。同じコンピュータで複数のウェブサイトを表示するには、Windows NT ServerまたはWindows 2000 Server/ProfessionalとIISが必要です。
3. 質問です。6つの組み込みASPオブジェクトを使用するにはどうすればよいですか?
  A:ASPは、アクセスし、それらを作成することなく、直接命令で使用することができます埋め込みオブジェクトの数を提供し、6つのオブジェクトは主に:要求(リクエスト)オブジェクト、応答(レスポンス)オブジェクト、作業フェーズ(セッション)オブジェクト、アプリケーション(アプリケーション)オブジェクト、サーバー(サーバー)オブジェクト、クッキーオブジェクト、これらの6オブジェクトのサーバー(サーバー)オブジェクトが他のコンポーネントでロードすることができ、ASPの機能性を拡張することができます。クッキーオブジェクトは、サーバー(サーバー)オブジェクトのこれらの6つのオブジェクトは、ASPの機能を拡張することができます他のコンポーネントをロードすることができます。
  Server.CreateObjectを使用して作成されたオブジェクトのライフサイクルは、それが作成されたときに始まり、それが載っているウェブアプリケーションが終了したときに終了します。オブジェクトを Web ページ間で使用したい場合は、Session オブジェクトを使用して、Server.CreateObject によって作成されたオブジェクトを記録することができます。
4. 質問です。Response.Redirectを使用すると、次のエラーが発生するのはなぜですか: "タイトルエラー、HTTPタイトルがユーザーのブラウザに書き込まれました、任意のHTTPのタイトルへの変更は、ページのコンテンツの前に書き込む必要があります"?
  A: Response.Redirectは、以下のような構文でWebページを別のWebページに転送することができます。Response.Redirect URLは、相対アドレスでも絶対アドレスでも構いませんが、IIS 4.0での使用とIIS 5.0での使用は異なります。
IIS4.0でのWebページの転送は、クライアントブラウザにデータが出力される前に行わないとエラーになります。当該データには、:などのHTMLスクロールタグが含まれますが、IIS5.0ではデフォルトでバッファがONになっており、このようなエラーが発生しないように改善されました。
  Response オブジェクトには、サイトが ASP を処理した後、すぐにクライアントにデータを配信するかどうかを設定する Buffer プロパティがありますが、このプロパティの設定も、クライアントへのデータ配信に先行して行う必要があります。
  念のため、ASPの動作プラットフォームに関係なく、ページの最初にバッファをオンに設定して書き込むと、エラーが発生しません。
5. 質問です。バッファリングされた出力は、Webページの配信に何らかの影響を与えますか?
  A: 大きなWebページでは、最初の部分がブラウザに表示されるのが遅れることがありますが、Webページ全体の読み込みは、キャッシュを使用しない場合よりも速くなります。
6. 質問です。フォームの送信がないときに、クエリ文字列の値として Request.QueryString コレクションを使用することは可能でしょうか?
  A: Requestオブジェクトはブラウザからデータを読み取るために使用されます。それは、URLについているパラメータに加えて、フォームフィールドの内容を読み取ることができ、リンクアドレスにどのようにリクエスト文字列が追加されても、Requestには違いがありません。getメソッドを使ってフォームを送信する場合でも、文字列内のすべての値を問い合わせるためにクエリ文字列を追加したリンクをたどる場合でも、Request.QueryStringコレクションを使用することができます。
7. 質問です。ASPスクリプトにたくさんのコメントを書きましたが、サーバーがASPファイルを処理するスピードに影響しますか?
  A: プログラムを書く過程でコメントをつけるのは良い習慣です。コメントが多すぎるASPファイルの全体的なパフォーマンスは、海外の技術者がテストしたところ、0.1%しか低下していないとのことですので、実際には、基本的にサーバーのパフォーマンス低下は感じられないと思われます。
8. 質問です。各ASPファイルの冒頭で使用する必要があるのでしょうか?
  A:各ASPファイルの先頭で使われているコードは、現在プログラムの記述にVBScriptが使われていることをサーバーに知らせるためのものですが、ASPのプリセットプログラム言語はVBScriptですので、これを無視しても正常に実行できますが、プログラムのスクリプト言語がJavaScripの場合は、プログラムの先頭行に使用するスクリプト言語を指定する必要があります。
9、Q:すべてのASPファイルで"Option Explicit"を使用しなければならないのでしょうか?  A: 実際には、VBScriptの変数の概念が曖昧になり、Dimで宣言する代わりに変数を直接使用できるようになりましたが、これは良い習慣ではなく、変数が繰り返し定義される可能性があるため、プログラムエラーの原因になることがあります。そこで、プログラム内でOption Explicit文を使用することで、変数を使用する際には必ず先に宣言するようにし、宣言されていない変数を使用すると、プログラム実行時にエラーになるようにすることができるのです。
  ASP ファイルで "Option Explicit" を使用すると、エラーが発生する可能性を最小限に抑え、プログラム全体のパフォーマンスを大幅に向上させることが実証されています。
10. 質問です。ASPファイルを実行する際のセキュリティ対策はどうなっているのでしょうか?
  A:ASPはコード保護の仕組みが充実しており、すべてのASPコードはサーバー側で実行され、クライアント側にはコードの実行結果のみが返されます。しかし、悪意のある人が意図的にWebサーバに被害を与えることも否定できないので、ASPファイルを書く際にはセキュリティに気を配ることがより重要です。
  ASPでは拡張子をincにしてファイルを紹介していますが、やはりここではASPを拡張子にすることを推奨します。このコードをセキュリティの低い Web Server で実行した場合、Web Server では、ある種の動的接続ライブラリ(inc など)が解析されるように定義されていないと、ファイルがソースコードとして表示されるため、アドレスバーに導入したファイル(拡張子は inc)のアドレスを入力するだけで導入したファイルの内容を閲覧することが可能です。
  また、データベースファイルをサイト構造の中に置くと、悪意のある人がデータベースのパスを知ったときに、簡単にそのデータベースにアクセスでき、データベースの内容を勝手に変更されてしまうので、置かないようにしましょう。このDSNには、データベースの物理的な場所、データベースへのアクセスに使用するドライバの種類、データベースへのアクセスにドライバが必要とするその他のパラメータなどが格納され、このDSNに対してデータベースアクセスを実行すると、直接アクセスすることができます。
11. 質問です。Webデータベース管理システムを検討する際、どのような問題を考慮すべきでしょうか?
  A: Webデータベース管理システムを評価する場合、マルチユーザーの問題、作成するWebデータベースがリレーショナルであること、データベースのセキュリティの3点を考慮する必要があります。12、質問です。ADOとはどのようなもので、どのようにデータベースを操作するのですか?
12. 質問です。ADOとはどのようなもので、どのようにデータベースを操作するのですか?
  A:ADOのフルネームは、ActiveXデータオブジェクト(ActiveXデータオブジェクト)、SQLコマンドの実行により、データベース情報を含むホームページのコンテンツを提供し、サーバー側で動作するASPの完全なサイトのデータベースソリューションを提供する専用のオブジェクトのデータベースへの最適化されたアクセスのセットです、ユーザーがブラウザ画面での入力、更新および削除できるようにSQLコマンドを実行してブラウザ画面でのサイトのデータベース情報です。
  ADOには主にConnection、Recordset、Commandオブジェクトがあり、その主な機能は次のとおりです。
  -Connectionオブジェクト:データベースファイルを開く、または接続する役割を担う。
  -Recordsetオブジェクト:データベースの内容にアクセスする。
  -コマンドオブジェクト:データベースへのアクションクエリーコマンドを与え、SQL Serverストアドプロシージャを実行します。
13、質問です。データベースにアクセスするために、RecordsetオブジェクトとCommandオブジェクトを使用することの違いは何ですか?
  A: Recordsetオブジェクトは、すべてのデータを転送するためにデータベースを必要とします。その後、大量のデータは、ネットワークブロックとデータベースサーバーの過負荷を引き起こすので、全体の実行効率は低下します。
SQL文がCommandオブジェクトを使って直接呼び出された場合、実行される操作はデータベースサーバー内で行われるため、当然ながら実行効率は高くなります。特に、完成したストアドプロシージャをサーバー側で実行することで、ネットワークトラフィックを削減し、さらに事前の構文解析により全体の実行効率を向上させることができます。
14. 質問です。各RecordsetオブジェクトにConnectionオブジェクトを作成する必要があるのでしょうか?
  A: リソースを節約するために、異なるレコードセット・オブジェクトに同じConnectionオブジェクトを同時に使用することができます。
15. 質問です。データベース管理システム(DBMS)とは何ですか?
  A: データベースに格納されたデータの安全性と一貫性を確保するためには、それに対応する管理作業を行うためのソフトウェア一式が必要であり、それがデータベース管理システム、略してDBMSです。DBMSはシステムによって異なりますが、一般的には次のような点を含んでいることが望ましいとされています。
  データベース記述機能:データベースのグローバルな論理構造、ローカルの論理構造、その他様々なデータベースオブジェクトを定義する。
  データベース管理機能:システム構成・管理、データアクセス・更新管理、データ整合性管理、データセキュリティ管理など。
  データベース照会・操作機能:この機能には、データベースの検索と修正が含まれます。
  データベース保守機能:データ導入・導入管理、データベース構造維持、データ復旧機能、パフォーマンス監視など。
  ためにデータベースシステムの開発効率を向上させるために、DBMSに加えて、現代のデータベースシステムが、また、アプリケーションの開発をサポートするためにさまざまなツールを提供します。
16、質問です。現在人気のあるWEBデータベース管理システムは何ですか?
  A: Webデータベース管理システムとしては、Microsoft SQL Server、Oracle、DB2、Sybase、Accessなどがあり、小規模な企業で利用されているのが現状です。
17、Q:ASPのADOのAddNewメソッドを使う場合と、直接"Insert into..."ステートメントを使う場合の違いは何ですか? ステートメントを使う場合。どちらが良いのでしょうか? 
  A: ADOのAddNewメソッドは、"Insert into"文をカプセル化しているだけなので、大量のデータを操作する場合は、SQL文を直接使用することで、ADOの"translation "が軽減されるので、データアクセスの速度が大幅に向上します。特に大量のデータがある場合は大きなメリットとなります。
18. 質問です。ASPで標準のinsert into books(name,email) values("kitty", "[email protected] ")を使用するとエラーが発生するのはなぜですか?
  A: SQL(Structured Query Language)は、1970年代にIBMが開発したデータ問合せ言語で、リレーショナルデータベースの問合せ言語の標準となっています。SQL文は英語ベースのプログラミング言語で、データベースの追加、管理、アクセスに使用することができます。
  SQL文の文字列はダブルクォートで追加できますが、ASPではシングルクォートでないと正しく実行されません。ですから、insert into books(name,email) values('kitty','[email protected]') のように記述する必要があります。
19. 質問です。ActiveXコントロールとは何ですか? このActiveXコントロールはどこで手に入るのですか?
  A: Microsoft ActiveXコントロールは、ソフトウェアプロバイダーによって開発された再利用可能なソフトウェアコンポーネントです。ASPの組み込みオブジェクトに加えて、インストールされている追加のActiveXコントロールをASPで使用することができ、貴重な開発時間を大幅に短縮することができますし、実際にASPには使用可能な多くのActiveXコントロールが組み込まれています。
  ActiveX コントロールを使用すると、Web アプリケーションや開発ツールに特別な機能をすばやく追加することができます。例えば、AdRotatorオブジェクトを使って広告のスクロールを、FileSystemObjectオブジェクトを使ってファイルアクセスを、Marqueeオブジェクトを使ってテキストのスクロールを作成することができます。
  現在、市販されているActiveXコントロールは1000以上あります。ActiveXコントロールは、C、C++などの様々なプログラミング言語や、Microsoft社のVisual Java開発環境「Microsoft Visual J++」で開発することができます。 一度開発したActiveXコントロールは、デザイナーや開発者がクライアントプログラムを開発する際に、あらかじめ組み立てられたコンポーネントとして使用することができます。このようにActiveXコントロールを利用することで、ユーザーはコンポーネントがどのように開発されたかを知る必要がなく、多くの場合、自分でプログラミングすることなくWebページやアプリケーションを設計することができる。
  サードパーティのソフトウェア開発者が提供する市販のコントロールは1000以上あります。Microsoft ActiveX Component Galleryでは、Microsoftやサードパーティが提供する様々なActiveXコントロールの情報とリンクを掲載しています。インターネットに対応したActiveXコントロールを開発している会社のリストは、Microsoft ActiveX Component Galleryで見ることができます。
20、質問です。strStartPort=(Request.Form ("catmenu_0") statementを使って取得したフォームの開始サイトの値が、データベースで見つからないのはなぜですか?
  A: これは、開始サイトの値にスペースがあるためです。例えば、本来の意味は "Hangzhou" ですが、スペースがあるため、ASP プログラムは "Hangzhou" という値を取得し、データベースには "Hangzhou" というレコードしかありません。解決策は Trim 機能を使って文字列の両端からスペースをすべて削除し、対応するステートメントは次のとおりです。
strStartPort=TRIM(Request.Form("catmenu_0"))です。
21. 質問です。ASPで変数のライフサイクルが終了したときに、変数の内容を保持する方法はいくつありますか?
  A: ブラウザの "refresh" ボタンを押す、ブラウザを閉じて再度開くなど、ページの終了を引き起こすアクションはすべて、変数のライフサイクルの終了を引き起こします。
  ウェブページの最後にある変数の内容を、次の実行のために保持したい場合、Applicationオブジェクトを使用することで実現できます。たとえば、Application オブジェクトを使って、サイトへの訪問者数をカウントするカウンターを作ることができます。
  Session オブジェクトは、Application オブジェクトと同様に、Web ページの最後に変数の内容を保存しますが、Application オブジェクトと異なり、各接続は個別の Session オブジェクトとなります。これは、単純に、すべてのオンラインサーファーが 1 つの Application オブジェクトを共有するだけですが、各オンラインサーファーは各自の Session オブジェクトを持つことになります。
  ApplicationオブジェクトとSessionオブジェクトは、サーバー側の情報を記録するのに役立ち、Cookiesオブジェクトは、ブラウザが提供するCookies機能を利用して、クライアント側の情報を記録することができるのです。注意点としては、Cookieはブラウザに記録される情報なので、他のASPオブジェクト(Server側に情報が保存される)にアクセスするように、データへのアクセスは簡単ではありません。クッキーのデータのやり取り
22. 質問です。使用するオブジェクトがなくなったら、どうしたらいいですか?
  A:オブジェクトを使い果たすと、まずCloseメソッドを使用して、オブジェクトが占有するシステムリソースを解放します。その後、オブジェクトの値を設定し、オブジェクトが占有するメモリを解放するために、それ以外の場合は、あまりにも多くのオブジェクトは、WEBサービスサイトの効率を減らすか、あるいはクラッシュする、該当文は、次のとおりです。
23. 質問です。ASPファイルのHTMLフォームフィールドを読み取る方法はいくつある?
  A:リクエストオブジェクトに加えて、URLに添付されたパラメータを読み取るために使用することができ、また、多くの場合、次の構文構造を使用して、HTMLのフォームフィールドの内容を読み取ることができます。
メソッドはGetとPostの2種類の転送方法を受け付けることができ、Postは大量のデータを転送できる方法ですが、Getメソッドは転送するデータをURLに添付して、一緒にサーバーに送信するので、転送できるデータ量は限られますが、実行効率はPostメソッドより良くなります。
  サーバーへのデータ送信はGetメソッドまたはPostメソッドで行いますが、Requestオブジェクトを使ったデータ受信の対応メソッドは以下の通りです。
  取得する。Request.QueryString ("field name"), これは Request ("field name") とも書くことができます。
  投稿する Request.Form ("field name"), Request ("field name") とも書ける。
24. 質問です。Requestコレクションの使用効率を上げるにはどうしたらいいですか?
  A: Requestコレクションを使用する場合、関連するコレクションの一連の検索を含むため、ローカル変数にアクセスするよりもはるかに遅くなります。したがって、Requestコレクションの値をページ内で何度も使用するつもりであれば、ローカル変数として格納することを検討すべきです。
25、質問です。ASPページでVBScriptとJscriptの両方を使用することができるように、スクリプトエンジンを混在させることは良いことでしょうか?
  A:ASPページではVBScriptとJScriptの両方を使用することができますが、同じページでJScriptとVBScriptの両方を使用することはお勧めしません。なぜなら、サーバーは(1つではなく)2つのスクリプト・エンジンをインスタンス化してキャッシュしようとしなければならず、システムの負担がある程度増えるからです。したがって、パフォーマンス上の理由から、同じページで複数のスクリプト・エンジンを混在させることは避けた方がよいでしょう。
26. 質問です。ASPファイルを作成し、構文的には正しいのですが、ブラウザから次のアドレスを入力するか、エクスプローラからブラウザを開くと、c: \pub³³a.asp というエラーが発生し、パーミッションが正しくないかファイルにアクセスできないことが示されますが、なぜASPファイルを正しく実行できないのですか?
  A:これは、ASPファイルが最初にサイトが"実行(スクリプト)"属性を持っている必要があり、それはアドレスがDOS形式ではなく、URL形式で入力する必要があり、我々はコンピュータ上でWebサービスプラットフォームをインストールして起動する必要があり、ASPファイルがWebサーバの仮想ディレクトリに保存されていることを確認して、それができます HTTP形式を介して閲覧するには、ブラウザのアドレスバーに入力してください。"http:// Webサイト名(またはサイトのIPアドレス)/ASPファイル名"と入力し、入力すると、サーバーがASPファイルを実行した結果をブラウザで確認することができます。
27. 質問です。ASP.NETとは何ですか?ASPとの関連は?
  A: Active Server Pages (ASP) は、HTML、スクリプト言語、および少数のコンポーネントを組み合わせて、サーバーサイドのインターネットアプリケーションを作成することができる、比較的簡単なプログラミング環境です。
  ASP.NETは、C#やスクリプト言語、HTML、XML、XSLなど、さまざまな高級言語を用いてWebベースのアプリケーションを作成する、マイクロソフトが推進する強力なプログラミング環境である。ASP.NETはオブジェクト指向言語としてC#を使用しており、多くの点でC#はマイクロソフトにとってJavaに近い存在になると思われます。 C#はASP.NETの開発において最も重要な機能の1つであり、MicrosoftはC#をJavaの強力なライバルとして開発する予定である。また、Microsoftの.Netフレームワークの重要な部分でもあります。私は、C#はプログラミング言語の分野でライバルに勝つためのマイクロソフトの主要なツールだと考えています。
  ASP.NETは、オブジェクト指向、データベース接続性、大規模サイトのアプリケーションなどで、ASPプログラムを凌駕しています。ASP.NETは、他の分野でもより多くの新機能を提供しています。例えば、組み込みのオブジェクトキャッシングとページ結果キャッシング、XMLデータセットを簡単に処理できる組み込みのXMLサポート、サーバーコントロールによるより完全な対話型システムなどです。
  ASP.NETはまだマイクロソフトのOSに完全にロックインされており、ASP.NETの潜在能力を本当に発揮させるには、C#かvb.netを使うのがよいでしょう。この2つの言語は、ASP.NET標準の中心となるスクリプト言語となる予定です。