Sorun:com.mchange.v2.c3p0.ComboPooledDataSource kaynağından özel bir bağlantı nasıl talep edebilirim?
- program Sybase sunucusuna bağlanmak için
com.mchange.v2.c3p0.ComboPooledDataSource
kullanır - program sırayla 2 yöntem,
runSQL1()
verunSQL2()
yürütür runSQL1()
bir #temptableSELECT * INTO #myTemp FROM TABLE1 WHERE X=2
oluşturur SQL çalıştırır
runSQL2()
, bu #tem'den okuyan SQL'i yürütür ptableSELECT * FROM #myTemp WHERE Y=3
SORUN:
runSQL2()
runSQL1()
teslim olandan havuzundan farklı DB bağlantısını teslim alır. Ancak, Sybase #temptables bağlantıya özgü olduğundan,runSQL2()
tablosu, tablosunu bulamadığında başarısız olur. Aklıma
en belirgin çözeltisi (kenara biz bile bir havuz gerekmez bu noktada havuz boyutu 1 yapma dejenere biri itibaren), nasılsa oldu özgü hangi havuzdan bağlantı hatırlamak runSQL1()
tarafından kullanılan ve runSQL2()
istek aynı bağlantı var.
com.mchange.v2.c3p0.ComboPooledDataSource
'da bunu yapmanın bir yolu var mı?
Mümkünse, eşzamanlılık güvenli olan bir yanıt istiyorum (başka bir deyişle, eğer runSQL1() içinde kullanılan bağlantı başka bir iş parçacığı tarafından kullanılıyorsa, bağlantı kurmak için runSQL2() 'nin çağrısına kadar bekleyecektir. bağlantı başka bir iş parçacığı tarafından serbest bırakılır).
Ancak, eğer bu imkansızsa, DB bağlantılarının (benim ilgilendiğim şeylerin) tek bir iş parçacığı içinde olduğunu varsayan ve bu nedenle runSQL2() tarafından istenen herhangi bir bağlantı 100% olacaktır runSQL1() için kullanılabilirse kullanılabilir.
Ayrıca, çözümün bir parçası olarak "#temptables kullanmayı durdur" seçeneğini içermedikleri sürece, sorunu başka şekilde çözen herhangi bir çözümü de memnuniyetle karşılıyorum.
Neden part1'i çalıştırmadan önce bağlantıyı istemiyorsunuz ve sonra bunu her iki çağrıya da bir parametre olarak iletemiyorsunuz? – Ivan
@ivan bunu yaptı. Ama bu çözümü sevmiyorum, bu yüzden özel bağlantıyı nasıl alacağımı öğrenmek istiyorum. – DVK
Ayrıca, @van'ın önerdiği çözümün uygun çözüm olduğunu düşünüyorum. Başka bir şekilde elde etmek için, ilk aldığınızda bağlantıya en az bir tanımlayıcı tutmanız gerekir. Bunu yaptıktan sonra havuz yöneticilerinde yansıma kullanmanız ve eşleşen bağlantıyı bulmanız gerekir. Bunun yerine sadece belirli bir bağlantıya referans yapmak daha temizdir. Bunu bir tanımlayıcı ile sorgulayarak gerçekten yapmanız gerekiyorsa, kendi sarmalayıcı bağlantı yöneticinizi yazıp bunu kullanabilirsiniz. – Kaan