关于JDBC驱动的简单问题
本人做练习的时候写了一个数据库连接类DBcon.java
-----------------DBcon.java------------------
为什么要将以下两步:
1.Class.forName( "sun.jdbc.odbc.JdbcOdbcDriver ");
2.conn = DriverManager.getConnection( "jdbc:odbc:*** ", "sa ", "123 ");
写到一个方法当中才能获得Connection的conn对象,
如果写成
public void A{
Class.forName( "sun.jdbc.odbc.JdbcOdbcDriver ");
}
public Connection B{
conn = DriverManager.getConnection;
return conn;
}
返回的conn为null
---------------------end-----------------------
对这段话也不是太理解:
Class 类的实例表示正在运行的 Java 应用程序中的类和接口.
forName(String className):返回与带有给定字符串名的类或接口相关联的 Class 对象.其newInstance(),创建此 Class 对象所表示的类的一个新实例.
------解决方案--------------------如果像lz这么写,如果你先调用A方法,再调用B方法的话,反正应该不是null吧?如果你只调用B方法,这样sun.jdbc.odbc.JdbcOdbcDriver驱动根本没装载进来,自然会出错。
------解决方案--------------------你的conn没有指向数据库地址和数据库,怎么能get到一个connection?
------解决方案--------------------推荐这样写
public class DBConnection {
Connection conn=null;
//构造方法
public DBConnection() {
//调用创建连接方法
createconnection();
}
private void createconnection() {
try {
Class.forName( "sun.jdbc.odbc.JdbcOdbcDriver ");
conn=DriverManager.getConnection( "jdbc:odbc:*** ");
} catch (
ClassNotFoundException e) {
e.printStackTrace();
} catch (
SQLException e) {
e.printStackTrace();
}
}
public Connection getConnection(){
return conn;
}
}
------解决方案--------------------是的上面的写法会比较好哦。
------解决方案--------------------mark
------解决方案--------------------1.Class.forName( "sun.jdbc.odbc.JdbcOdbcDriver ");
2.conn=DriverManager.getConnection( "jdbc:odbc:*** ");
分开写应该没有问题,不过要保证你的程序先执行一下1,再执行一下2
------解决方案--------------------写在一起和分开写,唯一可能的不同就是写在2个方法里的时候你没先执行forName装载驱动