2012-01-16 16 views
0

、私は次の構文を使用しているクラシックASPにパラメータ化クエリを記述する場合:クラシックASP /パラメータ化された本文のクエリ

Set cmdConn = Server.CreateObject("ADODB.Command") 
Set cmdConn.ActiveConnection = Conn 
cmdConn.Prepared = True 

SQL = " INSERT INTO myTable (column1, column2, column3) VALUES (?, ?, ?); " 

Set newParameter = cmdConn.CreateParameter("@column1", ad_Integer, ad_ParamInput, Len(input1), input1) 
cmdConn.Parameters.Append newParameter 
Set newParameter = cmdConn.CreateParameter("@column2", ad_Integer, ad_ParamInput, Len(input2), input2) 
cmdConn.Parameters.Append newParameter 
Set newParameter = cmdConn.CreateParameter("@column3", ad_Integer, ad_ParamInput, Len(input3), input3) 
cmdConn.Parameters.Append newParameter 

cmdConn.CommandText = SQL 
cmdConn.Execute 

そして、私は理解してる(独学)、ことを私が使用@column1新しいパラメータを追加するとき、これはその特定の列にパラメータを割り当てます。私は間違っているかもしれない。フルテキストクエリを作成しようとすると、これは私を完全に混乱させました。

これは私のオリジナルフルテキストクエリです:

SQL = "SELECT * FROM myTable WHERE MATCH (column1, column2, column3) AGAINST ('"&input&"' IN BOOLEAN MODE)" 

誰かがこのクエリのために何の構文を使用するように私を見るだろうか?

私はSQLは次のようになります想像:

SQL = "SELECT * FROM myTable WHERE MATCH (column1, column2, column3) AGAINST (? IN BOOLEAN MODE)" 

でもないnewParameter文字列を入れて何をしてください。喜んで受けた助けと説明...

答えて

1

"@columnN"はその列の名前であり、列columnNとは関係ありません。このフィールドはオプションです。名前を参照するときに名前を使用することが決してない場合は、すべてのパラメータについて指定されていない可能性があります。

これは、Parametersコレクションに追加された順序でパラメーターを参照する代わりに、出力および入出力パラメーターの値をCommandオブジェクトから取得するために使用できます。私はいくつかのDBMSもクエリ文字列の代わりに名前付きパラメータの使用をサポートすると信じていますか? (読みやすく、たぶん)。

、そのため

Set newParameter = cmdConn.CreateParameter(, adInteger, adParamInput, Len(input), input) 
cmdConn.Parameters.Append newParameter 
+0

おかげで、本当に便利にあなたの特定の質問に答えます。これは私に尋ねるいくつかのより多くの質問を与えましたが、私はあなたを悩ませるのではなく新しいものを始めるでしょう。乾杯 – TheCarver