SORU
16 Aralık 2008, Salı


Java SQL dizesi oluşturmak için en temiz

İstiyorum oluşturmak için bir SQL dize için veritabanı düzenleme (güncelleştirmeleri, siler, ekler, seçer, öyle şeyler) - yerine korkunç bir dize herhangi bir parametre yöntemi kullanarak milyonlarca " "'ler ve tırnak hangisi okunmaz en iyi olmalı daha iyi bir yol.

Yaptım düşün kullanarak MessageFormat - ama gerektiği için kullanılacak kullanıcı mesajları, ancak sanırım bunu yapardı makul bir iş ama sanırım olması gerek ama bir şey daha uyumlu SQL tip operasyonlarda java sql kütüphaneler.

Groovy iyi olurdu?

Herhangi bir yardım çok takdir.

CEVAP
16 Aralık 2008, Salı


Öncelikle hazırlanan tablolarda sorgu parametreleri kullanarak göz önünde bulundurun:

PreparedStatement stm = c.prepareStatement("UPDATE user_table SET name=? WHERE id=?");
stm.setString(1, "the name");
stm.setInt(2, 345);
stm.executeUpdate();

Yapılabilecek başka bir şey özelliklerinde tüm sorgular dosya tutmak. Örneğin bir sorgular.özellikleri dosya yukarıdaki başvurusunda bulunabilir:

update_query=UPDATE user_table SET name=? WHERE id=?

Basit bir Yardımcı Sınıf yardımıyla sonra:

public class Queries {

    private static final String propFileName = "queries.properties";
    private static Properties props;

    public static Properties getQueries() throws SQLException {
    	InputStream is = 
    		Queries.class.getResourceAsStream("/"   propFileName);
    	if (is == null){
    		throw new SQLException("Unable to load property file: "   propFileName);
    	}
    	//singleton
    	if(props == null){
    		props = new Properties();
    		try {
    			props.load(is);
    		} catch (IOException e) {
    			throw new SQLException("Unable to load property file: "   propFileName   "\n"   e.getMessage());
    		}			
    	}
    	return props;
    }

    public static String getQuery(String query) throws SQLException{
    	return getQueries().getProperty(query);
    }

}

aşağıdaki gibi sorularınıza kullanabilirsiniz

PreparedStatement stm = c.prepareStatement(Queries.getQuery("update_query"));

Bu oldukça basit bir çözümdür, ama iyi çalışıyor.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • ColdfusTion

    ColdfusTion

    3 Aralık 2007
  • KRQE

    KRQE

    6 AĞUSTOS 2007
  • Tylerron

    Tylerron

    6 AĞUSTOS 2006