Bir veritabanına bağlanmak için kullandığımda neden hem Class.forName("com.mysql.jdbc.Driver");
hem de Class.forName("com.mysql.jdbc.Driver").newInstance();
çalıştıklarını merak ediyordum. Yeni bir örnek oluşturulmadığından, ilk olarak çalışmaması gereken değil. Ve yine de, hala çalışıyor. Netbeans kullanıyorum 6.9.1. Girdiniz için teşekkürler!JDBC bağlantısı- Class.forName vs Class.forName(). NewInstance?
cevap
Class.forName("xxx")
veritabanıyla bağlantı oluşturmuyor, sadece JDBC sürücüsünü yükler ve daha sonra bir DriverManager.getConnection(...)
aramasının çalışmasını sağlayacak şekilde kaydeder. Sürücüyü taklit etmek gerekli değildir.
Jdbc 4.0'ı destekleyen bir sürücüde Class.forName() öğesine bile gerek yoktur. Sürücü, DriverManager tarafından görüntülendiğinde, kendisini anında yüklemek için yerleşik bir mekanizmaya sahip olması gerekiyordu.
(ref: http://download.oracle.com/javase/6/docs/api/java/sql/DriverManager.html) Sürücü Standardı GetConnection yöntemleri ve getDrivers, Java Standard Edition Hizmet Sağlayıcısı mekanizmasını desteklemek için geliştirilmiştir. JDBC 4.0 Sürücüleri, META-INF/services/java.sql.Driver dosyasını içermelidir. Bu dosya java.sql.Driver'ın JDBC sürücülerinin uygulanmasını içerir.
Uygulamalar artık ihtiyaç
my.sql.Driver explictly için: Örneğin, my.sql.Driver sınıfını yüklemek için, META-INF/hizmet/java.sql.Driver dosya girdisini içerecektir Class.forName() kullanarak JDBC sürücüleri yükleyin. Class.forName() kullanarak JDBC sürücülerini yükleyen mevcut programlar, değişiklik yapılmadan çalışmaya devam edecektir.
- 1. Class.forName (JDBC_DRIVER) artık gerekli değil mi?
- 2. Boş yapıcılarla vs newInstance
- 3. JAVA JDBC yeniden bağlantıları
- 4. Postgres: jdbc
- 5. Tomcat, TCPS'yi oluşturamıyor Oracle JDBC bağlantısı
- 6. Jdbc bağlantısı kapat ve hazırla kapat kapat
- 7. Yükleme JDBC sürücüsü
- 8. Class.forName Aşağıdaki kodu ::</p> <pre><code>String className = "SmsHelper" Class c = Class.forName(className); </code></pre> <p>kullanıyorum ClassNotFound İstisna
- 9. HID USB bağlantısı vs libusb
- 10. sqljdbc: JDBC sürücüsü sqljdbc.jar Vs sqljdbc4.jar
- 11. TCP/ana localhost IP bağlantısı, ben <strong>jdbc</strong> aracılığıyla <strong>sql sunucusu</strong> ile tutulmayı bağlanmaya çalışıyorum ben defalarca bu 2 hataları alıyorum
- 12. JDBC bağlantı hatası: tanınmayan saat dilimi
- 13. Belirli bir JDBC bağlantısı için veritabanı türü nasıl belirlenir?
- 14. Limit numarası satırları olan ResultSet jdbc sürücüsü
- 15. Java 64 bit JDBC-ODBC sürücü sorunları
- 16. java.sql.SQLException: Uygun bir sürücü bulunamadı jdbc: hive: // localhost: 10000/default
- 17. Genel TOAD bağlantısı Soru
- 18. Cypher'ın sorgu bir parçacığı içinde() metodu updateTopCallers arayacağım Neo4j JDBC
- 19. JDBC Yabancı bir anahtar tarafından başvurulan ilişki + özniteliğini edin
- 20. ClassNotFoundException: com.mysql.jdbc.Driver. web uygulaması için JDBC MySQL sürücüsü
- 21. Java, veritabanı bağlantısı için SSL kullan
- 22. JDBC, yinelenen
- 23. JDBC bağlantı varsayılan otomatikKomisyon davranış
- 24. JDBC/c3p0 kullanarak MariaDB'ye bağlanma
- 25. java.sql.SQLException: Jdbc için uygun bir sürücü bulunamadı: sqlite: db/Fakturi.sqlite
- 26. MarkLogic Veritabanı bağlantısı Jasper sunucusu ile
- 27. Java SQLite JDBC executeQuery boş olmayan bir sütunun boş ResultSet döner
- 28. Bir AndroidTV'ye ADB bağlantısı
- 29. Kendi lan ip
- 30. jdbc (windows kimlik doğrulama modu) ile java'dan sql sunucusuna bağlanma
Teşekkürler! Son bir qn-eğer bunu başlatırsanız, o zaman daha sonraki DriverManager.getConnection (..) tekrar tekrar oluşturmaz, düzeltmez? Bunu sadece ilk adımda gerçekleştirmediysen yapacak mı? – OckhamsRazor
Sadece sınıfı yükleyerek, sürücü yöneticisinin, onu sürücüde statik bir blok tarafından tetiklenen haliyle başlattığından şüpheleniyorum. Dürüst olmak gerekirse, tamamen emin değilim. Sürücüyü kullanmak istediğinizde (örneğin etrafına sarmak için), bağlantı almak için DriverManager'ı kullanmaktan kaçının veya DriverManager statik yöntemlerini kullanarak kendi sürücü örneğinizi kaydetmeniz gerekir. – araqnid