2011-02-12 21 views
6

Kullanılacak uygun doğrulama sorgusu için jdbc sürücü sınıfını belirleyebilen bir kitaplık var mı?jdbc doğrulama sorgusu

JDBC sürücüsü com.mysql.jdbc.Driver veya com.mysql.jdbc.jdbc2.optional.MysqlXADataSource ise örneğin için doğrulama sorgu bilecek kütüphane "1"

c3po http://www.mchange.com/projects/c3p0/index.html#preferredTestQuery

dbcp http://commons.apache.org/dbcp/configuration.html "validationQuery"

+0

"Doğrulama sorgusu" nu kastedersiniz? Bağlantının canlı olup olmadığını kontrol etmek mi istiyorsun? – skaffman

+4

çoğu bağlantı havuzu, son kullanıcının bağlantıyı test etmek için kullanılacak doğrulama sorgusunu ayarlamasını gerektirir. sql test sorguları taşınabilir değildir. # MySQL/PostgreSQL/MS için SQL kullanımı: SELECT 1 Oracle için #: DB2 kullanımı için ikili # 1'den SELECT 1: SELECT 1 FROM sysibm.sysdummy1 Son kullanıcıların bu şeylerden endişelenmesinin nedeni nedir? ve her programcı aynı şeyi neden yapıyor? dolayısıyla kütüphane önerisi – joshjdevl

+0

c3po'nun iyi bir konsepti var - automaticTestTable. Bu fikir, senaryoların jdbc kullanıcısının tablo oluşturmasına izin vermeyebileceğinden genişletilebilir. Yani, bunun yerine, liquibase kullandığımız gibi, her şemada databasechangelog vardır. Daha sonra SELECT * 'i databasechangelog'dan kullanabiliriz. – joshjdevl

cevap

8

JDBC türü 4 bir isValid yöntemi sağlar

+0

Aslında JDBC 3'ten beri düşünüyorum. – peterh

0

Bunu kütüphanedeki böyle bir şey için uygun bir yer olduğunu sanmıyorum.

Bağlantı havuzu kullanıyorsanız, bağlantıyı vermeden önce bağlantıları kontrol etmesini isteyeceğinizden daha büyük olasılıkla. Uygun SQL’i girip havuzun buna izin vermesini sağlayabilirsiniz. Bir kütüphane geri adım olabilir, çünkü kodunuzun onu çağırdığını ileri sürer.

+0

Sanırım bir adım geri döndü çünkü bir kütüphaneden bahsediyorsunuz. Kalbinde basit bir şekilde basit olan bir şey için başka bir bağımlılık. "SELECT 1" yazıp devam et. – duffymo

+1

Görünüşe göre, sizden bahsetmediğiniz havuz çözümlerinden hiçbiri böyle olmadığından, sizinle aynı fikirde değiller. Kimse bu kadar büyük bir anlaşma olduğunu düşünmüyor. Onları inandırmak için haçlı seferinde iyi şanslar. Kimse de cevap vermekten rahatsız oldu. Bu ne diyor? – duffymo