2013-03-31 103 views
5

我是Java編程新手。我想用String.format構建一個SQL查詢字符串。我已經在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; 

這裏註冊的bean類對象。但這種方法是行不通的,只保存「{0}」,「{1}」 ......在數據庫

另一種方法我用它工作正常,但更多的代碼比的String.format

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個小數點表示爲一個字符串。請參閱以下文章的字符串格式。 How to use java.String.format in Scala?但是,無論如何,你可以使用字符串格式化技術。但是,您將不得不注意您如何使用它。您可能不得不使用帶有s的百分比符號的C類型,例如, %s爲每個字符串放置在查詢中。如果要將每個字符串插入鏈接中顯示的SQL語句,則必須指明定位。

使用PreparedStatement是用於執行JDBC SQL語句的Java約定,因此應該使用它。

+0

Thanks @blackpanther我理解字符串格式的概念 – SarabjeetSingh

+0

使用PreparedStatement不僅僅是一個約定。它更高效並且可以防止SQL注入。 – Catweazle

相關問題