Qu'est-ce que la Classe.forName(“org.sqlite.JDBC”);' faire?
Je suis en train de créer une application simple avec une base de données SQLite. J'ai choisi d'utiliser le SQLiteJDBC pilote.
Le code ci-dessous est tirée du site web ci-dessus.
Ma question est sur la ligne après public static void main...
Il lit: Class.forName("org.sqlite.JDBC");
Ma question est, ce que fait cette ligne signifie? Et que fait-il? Il ne semble pas être relié au reste du code. Class.forName()
doit retourner une classe, mais la ligne semble être le seul à l'intérieur du corps. Quoi qu'il renvoie n'est pas utilisé par une autre partie du code, que je peux voir.
S'il vous plaît aider à clarifier cela. Merci à l'avance.
public class Test {
public static void main(String[] args) throws Exception {
Class.forName("org.sqlite.JDBC");
Connection conn =
DriverManager.getConnection("jdbc:sqlite:test.db");
Statement stat = conn.createStatement();
stat.executeUpdate("drop table if exists people;");
stat.executeUpdate("create table people (name, occupation);");
PreparedStatement prep = conn.prepareStatement(
"insert into people values (?, ?);");
prep.setString(1, "Gandhi");
prep.setString(2, "politics");
prep.addBatch();
prep.setString(1, "Turing");
prep.setString(2, "computers");
prep.addBatch();
conn.setAutoCommit(false);
prep.executeBatch();
conn.setAutoCommit(true);
ResultSet rs = stat.executeQuery("select * from people;");
while (rs.next()) {
System.out.println("name = " + rs.getString("name"));
System.out.println("job = " + rs.getString("occupation"));
}
rs.close();
conn.close();
}
}
Vous devez vous connecter pour publier un commentaire.
Il charge d'une classe dynamiquement. Ce n'Classe.forname méthode de faire? est un bon article à ce sujet et il explique aussi pourquoi les pilotes de base de données pour les besoins d':
META-INF/services/java.sql.Driver
fichier, mais je ne vois toujours extrait le fichier dans l'arborescence des sources du projet. xerial.org/trac/Xerial/wiki/SQLiteJDBCLa Classe.forName déclaration est de s'assurer que la classe qui implémente le pilote JDBC pour sqlite3 est chargé et enregistré avec JDBC usine mécanisme.
Lorsque vous appelez DriverManager.getConnection(), il semble pour les classes qui sont inscrits et demande à être capable de gérer la chaîne de connexion. Si aucune classe n'est trouvé, il ne peut pas créer la connexion.