Skip to content

Categories:

JDBC连接数据库篇

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”); 其实很简单,看看图

jdbc配置

看懂了吧,所谓加载驱动就是找到对应的驱动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,当然写的时候不要忘记抛错。

Posted in java.

Tagged with .


0 Responses

Stay in touch with the conversation, subscribe to the RSS feed for comments on this post.



Some HTML is OK

or, reply to this post via trackback.