为啥要设置字符串 DRIVER?
Posted
技术标签:
【中文标题】为啥要设置字符串 DRIVER?【英文标题】:Why is string DRIVER being set?为什么要设置字符串 DRIVER? 【发布时间】:2018-06-14 19:07:50 【问题描述】:我正在学习教程,正在查看以下代码:
package com.za.tutorial;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class CreateDB
public static final String DRIVER = "org.apache.derby.jdbc.EmbeddedDriver";
public static final String JDBC_URL = "jdbc:derby:zadb;create=true";
public static void main(String[] args) throws SQLException
Connection connection = DriverManager.getConnection(JDBC_URL);
connection.createStatement().execute("create table channels (channel varchar(20), topic varchar(20),videoclip varchar(20))");
connection.createStatement().execute("insert into channels values " +
"('oodp', 'creational', 'singleton'), " +
"('oodp', 'creational', 'factory method'), " +
"('oodp', 'creational', 'abstract factory')");
System.out.println("channels table created and records successfully inserted...");
为什么要引入这条线?
public static final String DRIVER = "org.apache.derby.jdbc.EmbeddedDriver";
没有它,代码也可以工作,而且似乎没有被引用
【问题讨论】:
这条线没用。在 Java 的早期,有必要通过运行带有驱动程序类的Class.forName(...)
来“初始化”驱动程序。但多年来一直没有必要。
【参考方案1】:
在 JDBC 4 (Java 6) 之前的 JDBC 版本中,您需要使用 Class.forName(...)
显式加载 JDBC 驱动程序。在 JDBC 4 中,引入了自动加载驱动程序(假设驱动程序支持它),它允许 DriverManager
自动发现并加载初始类路径上的驱动程序。详情请参阅How is driver class located in JDBC4。
您使用的教程可能有一个较早的版本,它确实显式加载了驱动程序,例如以
的形式public class CreateDB
public static final String DRIVER = "org.apache.derby.jdbc.EmbeddedDriver";
public static final String JDBC_URL = "jdbc:derby:zadb;create=true";
public static void main(String[] args) throws SQLException, ClassNotFoundException
Class.forName(DRIVER);
Connection connection = DriverManager.getConnection(JDBC_URL);
connection.createStatement().execute("create table channels (channel varchar(20), topic varchar(20),videoclip varchar(20))");
connection.createStatement().execute("insert into channels values " +
"('oodp', 'creational', 'singleton'), " +
"('oodp', 'creational', 'factory method'), " +
"('oodp', 'creational', 'abstract factory')");
System.out.println("channels table created and records successfully inserted...");
本教程的作者似乎删除了驱动程序的显式加载,但忘记删除常量。您可以安全地删除它,它没有在显示的代码中使用。
请注意,在某些情况下仍然需要像这样加载驱动程序。
【讨论】:
以上是关于为啥要设置字符串 DRIVER?的主要内容,如果未能解决你的问题,请参考以下文章
请问JSON格式为啥要转换成JavaBean对象去刷新界面,而不能直接用JSON去刷新界面