2011-07-23 13 views
0

簡単な質問。私はJavaとMySQLデータベースを使用しています。私のような、PreparedStatementのメソッドを使用すると、パラメータ化される内容のデータベースへのアクセス方法を書きたい:パラメータ付きプリペアドステートメントを使用したデータベースアクセス

public DBResult selectQueryWithParameters(String SQL, Object... params) 

私はあなたが選択クエリのためにこれを行うことができます知っているが、何DROPについて、CREATEおよびALTERを使用している問い合わせますメソッド(SQL)を実行します。同様に、executeUpdate(SQL)メソッドを使用しているUPDATE、INSERTおよびDELETEクエリを実行できます。これらのクエリにパラメータ化されたメソッドを記述できますか? ベストウェイ

答えて

1

ConnectionのprepareStatementメソッドを使用すると、文を準備できます。次に、setInt、setString、setXXメソッドを使用してパラメータを設定できます。これは、SELECT、UPDATE、INSERT、およびDELETEで機能します。

なぜDROP、CREATE、ALTERのPreparedStatementが必要ですか? CREATE TABLEのstuff(メッセージVARCHAR(?));

私にはあまり意味がありません。

+0

ドロップするテーブルをパラメータとして渡すと、DROPやALTERなどのアクティビティが動的に実行される可能性があるからです。セキュリティのために、これを行うためにパラメータ化されたメソッドを使用する方が良いです。 PreparedStatementは単にパフォーマンスを改善します。だから、私の質問はどうですか?これらのメソッドをパラメータ化できますか? – ucas

+0

正しくリコールすれば、DROP、CREATE、およびALTERのPreparedStatementを使用できます。しかし、これらのステートメントには実際にパラメーターを設定することはできません。私はこのコメントを確認していません。だからあなたは自分でそれをチェックすることができます。それを言って、それは私の意見では悪い習慣です。 DROP、CREATE、およびALTERはまれなイベントであり、アプリケーションの一部ではありません。 – emory

関連する問題