2009-04-20 6 views
9

私は、VisualScriptのClassic ASPを使用して、パラメータ化されたSQLクエリを実行する最も簡単な方法を教えてもらえますか?Classic ASPでパラメータ化されたSQLクエリを作成するには?

コンパイル可能な例が最適です。

+0

パラメータ化されたSQLクエリを参照していますか? –

+0

はい。明確にするために質問を更新するつもりです。ありがとう! –

答えて

13

はは、ADODB.Commandオブジェクトを使用します。

はここのリンクです。

with createobject("adodb.command") 
    .activeConnection = application("connectionstring") 
    .commandText = "select * from sometable where id=?" 
    set rs = .execute(,array(123)) 
end with 

adodbを直接使用する代わりに、カスタムdbアクセスオブジェクトを使用することもお勧めします。これにより、より良いApiを構築し、テスト容易性を向上させ、デバッグ/ロギング/プロファイリングのフックを追加することができます。第2に、class_terminiateイベントを使用して、暗黙のロールバックにエラーがあるリクエストスコープのトランザクションを追加できます。ウレDBアクセスオブジェクトは、adovbs.inc含めへ次のクエリAPI

call db.execute("update some_table set column=? where id=?", array(value, id)) 
set rs = db.fetch_rs("select * from some_table where id=?", array(id)) 
count = db.fetch_scalar("select count(*) from some_table where column > ?", array(value)) 
+0

これでエラーを処理するにはどうすればよいですか? – Geshan

+0

非常にエレガントで最小のvbscript - 私はそれが好きです! –

+0

列が数値で値がnullの場合、これは機能しません。これがADODB.Command.CreateParameterを使用せずに動作する方法はありますか? –

11

私はあなたがパラメータ化されたSQLクエリを指していると仮定しています。

Set adoCon = Server.CreateObject("ADODB.Connection") 
adoCon.Open "connectionstring" 
SET cmd = Server.CreateObject("ADODB.Command") 
cmd.ActiveConnection = adoCon 
cmd.CommandType= adCmdStoredProc 
cmd.CommandText = "GetCustomerByFirstName" 

cmd.Parameters.Append cmd.CreateParameter("@FirstName",adVarchar,adParamInput,50,"John")  

Set Rec = cmd.Execute() 
While NOT Rec.EOF 
    'code to iterate through the recordset 
    Rec.MoveNext 
End While 

がUPDATE:あなたが認識される定数のADOVBS.incファイルをインクルードする必要があり、このような場合は、その後、VBScriptのコードは次のようになります。 ADOVBS.inc

+0

私はASPにadVarcharとadParamInput定数を認識させるためにいくつかのファイルを含める必要がありますか? –

+1

はい。そのファイルへのリンクhttp://www.asp101.com/articles/john/adovbs/adovbs.inc.txt –

+0

この提案は、ストアドプロシージャのシナリオで非常に役立ちました – Thanigainathan

8

別のオプションを提供していますあなたのASPの先頭近くに次のタイプライブラリへの参照を追加することです。

<!--METADATA TYPE="TypeLib" NAME="ADODB Type Library" UUID="00000205-0000-0010-8000-00AA006D2EA4" FILE="C:\Program Files\Common Files\System\ado\msado15.dll" VERSION="2.5" --> 

Hereは、いくつかのタイプライブラリのリストです:たぶんこれは、より優れた性能を有しています。

+1

+1素晴らしい提案! – Abel

関連する問題