Java Data Base Connectivity,JDBC——简单来说就是java连接数据库并执行SQL的API,当然不管什么数据库都一样。我们来看看链接代码:
/** @author Sinyee Simrina */ public class DBConnectDemo { private Connection conn; /** * Function : just a jdbc connection DEMO * * Product describe: just a jdbc connection DEMO * * on Aug 21, 2009 BY Simrina */ public void connectDB() { //connncet messages String user = "root"; String password = "root"; //url for different DB 问题一:连接名是怎么构成的 String url = "jdbc:mysql://localhost:3306/testDB"; try { //driver for mySQL问题二:加载驱动的字符串到底什么意思? Class.forName("com.mysql.jdbc.Driver"); //问题三:为什么我没有用常用Class.forName("XXX").newInstance(); try { conn = DriverManager.getConnection(url, user, password); // TODO to do sth after connnect DB 后续问题:连接了数据之后怎么用 } catch (SQLException e) { e.printStackTrace(); } } catch (ClassNotFoundException e) { e.printStackTrace(); } } }
问题一:连接名是怎么构成的
问题二:加载驱动的字符串到底什么意思?
问题三:为什么我没有用常用Class.forName(”XXX”).newInstance();
后续问题:连接了数据之后怎么用
搞清楚前三个问题,JDBC以后闭着眼睛也可以写出来了
JDBC 连接方式+数据库类别+对应数据库的连接url
所以除了mySQL:
我们看看其他数据库的连接讯息。。
//url = “jdbc:oracle:thin:@localhost:1521:testDB”;
//url = “jdbc:sqlserver://localhost:1433;DatabaseName=testDB”
Class.forName(”com.mysql.jdbc.Driver”); 其实很简单,看看图

看懂了吧,所谓加载驱动就是找到对应的驱动class而已,不需要死记硬背。所以不要再问为什么sqlServer2000和2005的驱动字符串不一样了,微软刚好改变了Driver的存放的包的包名而已——下次发现ClassNotFoundException时候,直接看看你的classpath下有没有这个驱动——或者是驱动的包名类名是不是正确。
我们看看oracle/sqlserver的,现在知道为什么了吧
//Driver for ORACLE
//Class.forName(”oracle.jdbc.OracleDriver”);
//Driver for sqlSeriver2000
//Class.forName(”com.microsoft.jdbc.sqlserver.SQLServerDriver”);
//Driver for sqlSeriver2005
//Class.forName(”com.microsoft.sqlserver.jdbc.SQLServerDriver”);
为什么没有用常用Class.forName(”XXX”).newInstance();
newInstance方法的作用,是获取该驱动的一个实例,连接JDBC驱动只要加载就足够了,DriverManager就可以获取到连接
前三步做完了,不管哪一个数据库都可以获取到连接,不管是orcale还是sqlServer,DB2或者Sybase,当然写的时候不要忘记抛错。
0 Responses
Stay in touch with the conversation, subscribe to the RSS feed for comments on this post.