2013-03-31 28 views
5

Javaプログラミングの初心者です。 String.formatを使用してSQLクエリ文字列を作成します。ここでサインアップは、Beanクラスのオブジェクトである私は、すでにC#でString.formatを使用し、それが正常に働いている、ではなくJavaでString.formatを使用してSqlクエリ文字列を構築できますか?

String Query = String.format("insert into authentication(Id,Name,Email,Password,DOB,Gender,Phone,SQ,SA) values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}')", signup.getId(), signup.getName(), signup.getEmail(), signup.getPassword(), signup.getDate_Of_Birth(), signup.getGender(), signup.getPhone(), signup.getSQ(), signup.getSA()); 

try { 
    ps = con.prepareStatement(Query); 
    int i = ps.executeUpdate(); 
} catch (SQLException e) { 
    e.printStackTrace(); 
} 

return i; 

。 String.Formatのと比較してしかし、この方法は、それが唯一の「{0}」、「{1}」...データベース

別の方法では、私はそれがうまく働いて使用していますが、より多くのコードセーブ機能していない

try { 
    ps = con.prepareStatement("insert into authentication Id=?,Name=?,Email=?,Password=?,DOB=?,Gender=?,Phone=?,SQ=?,SA=?,IsVerified=?,IsPay=? "); 
    ps.setString(1, signup.getId()); 
    ps.setString(2, signup.getName()); 
    ps.setString(3, signup.getEmail()); 
    ps.setString(4, signup.getPassword()); 
    ps.setString(5, signup.getDate_Of_Birth()); 
    ps.setString(6, signup.getGender()); 
    ps.setString(7, signup.getPhone()); 
    ps.setString(8, signup.getSQ()); 
    ps.setString(9, signup.getSA()); 

    int i = ps.executeUpdate(); 
} catch (SQLException e) { 
    e.printStackTrace(); 
} 

それはJavaでString.formatを使用してSQLクエリ文字列を構築することは可能ですか?

答えて

2

文字列フォーマットは、Java文字列の書式設定に使用されます。例えば、浮動小数点の2小数点を文字列として表現するなど、必要なときに使用できます。以下のString書式の記事を参照してください。 How to use java.String.format in Scala?しかし、忘れずに、文字列フォーマット技術を使用することができます。しかし、あなたはそれをどのように使用しているかについて注意を払う必要があります。数値を使用する代わりに、Cタイプを使用しなければならないでしょう。クエリに配置する各文字列の%s。リンクに示されているように、各文字列がSQLステートメントに挿入される場合は、位置を指定する必要があります。

PreparedStatementの使用は、JDBC SQL文の実行に使用されるJavaの規約であるため、使用する必要があります。

+0

ありがとう@blackpanther私は文字列フォーマットのコンセプトを理解しています – SarabjeetSingh

+0

PreparedStatementの使用は単なる習慣ではありません。より効率的で、SQLインジェクションから保護します。 – Catweazle

関連する問題