2013-03-31 10 views
5

Jestem nowy w programowaniu Java. Chcę zbudować ciąg zapytania SQL przy użyciu String.format. I już używać String.format w C# i to działa dobrze, ale nie w javaCzy mogę zbudować sql ciąg kwerendy przy użyciu String.format

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; 

Tutaj zarejestruj jest klasa fasola przedmiot. Ale ta metoda nie działa to tylko zaoszczędzić „{0}”, „{1}” ... w bazie

Inna metoda używam To działa dobrze, ale więcej kodu w porównaniu do 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(); 
} 

Czy można utworzyć ciąg zapytania SQL za pomocą String.format w java?

Odpowiedz

2

Formatowanie ciągów służy do formatowania ciągów Java. Można ich użyć, gdy potrzebujemy, na przykład, 2 dziesiętnych punktów liczby zmiennoprzecinkowej, które mają być reprezentowane jako łańcuch. Zobacz następujący artykuł dotyczący formatowania ciągów. How to use java.String.format in Scala? Jednak za wszelką cenę można użyć techniki formatowania ciągów. Będziesz jednak musiał zwrócić uwagę na to, jak go używasz. Zamiast używać liczb, prawdopodobnie będziesz musiał użyć typu C używając znaku procentowego z s, np. % s dla każdego ciągu znaków, który ma zostać umieszczony w zapytaniu. Będziesz musiał wskazać pozycjonowanie, jeśli każdy z twoich ciągów zostanie wstawiony do instrukcji SQL, jak pokazano w linku.

Używanie PreparedStatement to konwencja języka Java używana do wykonywania instrukcji SQL JDBC, dlatego powinna być używana.

+0

Dzięki @blackpanther Rozumiem koncepcję formatowania ciągów znaków – SarabjeetSingh

+0

Używanie PreparedStatement to nie tylko konwencja. Jest bardziej wydajny i chroni przed SQL Injection. – Catweazle

Powiązane problemy