Komut ne olacak
Class.forName("oracle.jdbc.driver.OracleDriver")
bir Oracle veritabanına bağlanırken tam olarak ne yapmalı? Aynı şeyi yapmanın başka bir yolu var mı?
Komut ne olacak
Class.forName("oracle.jdbc.driver.OracleDriver")
bir Oracle veritabanına bağlanırken tam olarak ne yapmalı? Aynı şeyi yapmanın başka bir yolu var mı?
Açağırdığım ayrı bir sınıfta ve bağlantıya ihtiyacım olan her sunucu için bağlantı alanı elde etmek için nesne oluşturuyorum, o zaman java atlayacak veya tekrar yüklenecek? Class.forName("oracle.jdbc.driver.OracleDriver")AA'sClass.forName("oracle.jdbc.driver.OracleDriver")
Yanıtlar:
FQCN (tam nitelenmiş sınıf adı) ile sınıf nesnesine bir başvuru alır oracle.jdbc.driver.OracleDriver.
Belirtilen sınıfın geçerli sınıf yükleyici tarafından yüklenmesini sağlamanın yanı sıra, bir veritabanına bağlanma açısından hiçbir şey "yapmaz" . Yazmak arasında temel bir fark yok
Class<?> driverClass = Class.forName("oracle.jdbc.driver.OracleDriver");
// and
Class<?> stringClass = Class.forName("java.lang.String");
Class.forName("com.example.some.jdbc.driver")Çağrılar , JDBC sürücüsünü yüklemenin eski yolu olduğu için JDBC kullanan eski kodda görünür .
Gönderen Java Eğitimi :
JDBC'nin önceki sürümlerinde, bir bağlantı elde etmek için, önce yöntemi çağırarak JDBC sürücünüzü başlatmanız gerekiyordu
Class.forName. Bu yöntemler, türde bir nesne gerektiriyordujava.sql.Driver. Her JDBC sürücüsü, arayüzü uygulayan bir veya daha fazla sınıf içerirjava.sql.Driver.
...
Sınıf yolunuzda bulunan tüm JDBC 4.0 sürücüleri otomatik olarak yüklenir. (Ancak, yöntemle JDBC 4.0 öncesi tüm sürücüleri manuel olarak yüklemeniz gerekirClass.forName.)
Class.forName(), döndürülen driverClass referansını yakalamadan arayacağınıza dikkat etmelisiniz, bu nedenle ilk bakışta işlemsiz bir işlem gibi görünecektir
Class.forName("etc.driver")?
Class.forName(...).
Gönderen Java JDBC öğretici :
JDBC'nin önceki sürümlerinde, bir bağlantı elde etmek için, önce yöntemi çağırarak JDBC sürücünüzü başlatmanız gerekiyordu
Class.forName. Sınıf yolunuzda bulunan tüm JDBC 4.0 sürücüleri otomatik olarak yüklenir. (Ancak, yöntemle JDBC 4.0 öncesi tüm sürücüleri manuel olarak yüklemeniz gerekirClass.forName.)
Dolayısıyla, Java 1.6 ile Oracle 11g (11.1) sürücüsünü kullanıyorsanız, aramanıza gerek yoktur Class.forName. Aksi takdirde, sürücüyü başlatmak için aramanız gerekir.
Class.forNameÇağrı kuvvetleri classloader verilen sınıf yüklemek için. Bu, eğitimde açıklanan manuel yükleme adımıdır.
class.forName();:)
Java 6 öncesi DriverManagersınıf, hangi JDBC sürücüsünü kullanmak istediğinizi bilemezdi. Class.forName("...")sürücü sınıflarını önceden yüklemenin bir yoluydu.
Java 6 kullanıyorsanız artık bunu yapmanız gerekmez.
Bu komut, DriverManager örneği için kullanılabilir olması için Oracle jdbc sürücüsünün sınıfını yükler. Sınıf yüklendikten sonra sistem onu kullanarak Oracle'a bağlanabilir. Alternatif olarak, DriverManager'ın registerDriver yöntemini kullanabilir ve bunu ihtiyacınız olan JDBC sürücüsü örneğiyle geçirebilirsiniz.
Bir alternatif , JVM'yi başlattığınızda komut satırında gerekli sürücüleri belirtmek için jdbc.drivers System özelliğini kullanmaktır .
Oracle.jdbc.OracleDriver'ı kullanın, oracle.jdbc.driver.OracleDriver'ı değil. Tomcat kullanıyorsanız, sürücü jar dosyası "WEB-INF \ lib" dizinindeyse, kaydetmenize gerek yoktur. Bunu test.jsp olarak kaydedin ve web dizininize koyun ve Tomcat yöneticisinde web uygulaması klasörünüzü yeniden konuşlandırın:
<%@ page import="java.sql.*" %>
<HTML>
<HEAD>
<TITLE>Simple JSP Oracle Test</TITLE>
</HEAD><BODY>
<%
Connection conn = null;
try {
Class.forName("oracle.jdbc.OracleDriver");
conn = DriverManager.getConnection("jdbc:oracle:thin:@XXX.XXX.XXX.XXX:XXXX:dbName", "user", "password");
Statement stmt = conn.createStatement();
out.println("Connection established!");
}
catch (Exception ex)
{
out.println("Exception: " + ex.getMessage() + "");
}
finally
{
if (conn != null) {
try {
conn.close();
}
catch (Exception ignored) {
// ignore
}
}
}
%>