JDBC核心类、接口
重要包名:java.sql.* 和 javax.sql.*
Driver接口
- 使用:表示java驱动程序接口,所有具体的数据库厂商要来实现此接口。
- 重要方法:
- 字段含义:
URL语法: jdbc协议:数据库子协议://主机:端口/数据库
user: 数据库的用户名
password: 数据库用户密码
DriverManager类
- 使用:驱动管理器类,用于管理所有注册的驱动程序
- 重要方法:
- registerDriver(。driver) : 注册驱动类对象
- Connection getConnection(url,user,password); 获取连接对象
Connection接口
- 使用:驱动管理器类,用于管理所有注册的驱动程序
- 重要方法:
- Statement createStatement() : 创建Statement对象
- PreparedStatement prepareStatement(String sql) : 创建PreparedStatement对象
- CallableStatement prepareCall(Str
- ing sql) :创建CallableStatement对象
Statement接口
- 使用:用于执行静态的sql语句
- 重要方法:
- int executeUpdate(String sql) : 执行静态的更新sql语句(DDL,DML)
- ResultSet executeQuery(String sql) :执行的静态的查询sql语句(DQL)
PreparedStatement接口
- 使用:继承Statement接口,用于执行预编译的sql语句
- 重要方法:
- int executeUpdate(String sql) : 执行预编译的更新sql语句(DDL,DML)
- ResultSet executeQuery(String sql) :执行预编译的的查询sql语句(DQL)
CallableStatement接口
- 使用:继承Statement接口,用于执行存储过程的sql语句(call xxx)
- 重要方法:
- ResultSet executeQuery() : 调用存储过程的方法
ResultSet接口
- 使用:用于执行预编译的sql语句
- 重要方法:
- boolean next() : 将光标移动到下一行
- getXX() : 获取列的值
简单连接
注册驱动
代码:Class.forName("com.mysql.jdbc.Driver");
解释: DriverManager类的registerDriver()方法的参数是java.sql.Driver,但java.sql.Driver是一个接口,实现类由mysql驱动来提供,mysql驱动中的java.sql.Driver接口的实现类为com.mysql.jdbc.Driver。那么注册驱动的代码如下:
DriverManager.registerDriver(new com.mysql.jdbc.Driver());
上面代码虽然可以注册驱动,但是出现硬编码(代码依赖mysql驱动jar包),如果将来想连接Oracle数据库,那么必须要修改代码的。并且其实这种注册驱动的方式是注册了两次驱动!
JDBC中规定,驱动类在被加载时,需要自己“主动”把自己注册到DriverManger中。
mysql驱动包com.mysql.jdbc.Driver类中对此实现为:
package com.mysql.jdbc;
import java.sql.DriverManager;
import java.sql.SQLException;
// Referenced classes of package com.mysql.jdbc:
// NonRegisteringDriver
public class Driver extends NonRegisteringDriver implements java.sql.Driver {
public Driver() throws SQLException {
}
static {
try {
DriverManager.registerDriver(new Driver());
} catch (SQLException E) {
throw new RuntimeException("Can't register driver!");
}
}
}
com.mysql.jdbc.Driver类中的static块会创建本类对象,并注册到DriverManager中。这说明只要去加载com.mysql.jdbc.Driver类,那么就会执行这个static块,从而也就会把com.mysql.jdbc.Driver注册到DriverManager中,所以可以把注册驱动类的代码修改为加载驱动类。
获取连接
方式一(不推荐):
@Test
public void testConnection() throws SQLException {
// 1.创建驱动程序类对象
Driver driver = new com.mysql.jdbc.Driver(); //不推荐直接new,多次new浪费内存
String url = "jdbc:mysql://127.0.0.1:3306/address";
String user = "root";
String password = "password";
Properties prop = new Properties();
prop.setProperty("user", user);
prop.setProperty("password", password);
// 2.连接数据库
Connection conn = (Connection) driver.connect(url, prop);
// 3.输出连接信息
System.out.println(conn);
}
方式二(推荐):
@Test
public void testConnection2() throws SQLException {
String driver = "com.mysql.jdbc.Driver";
String url = "jdbc:mysql://127.0.0.1:3306/address";
String username = "root";
String password = "password";
Connection conn = null;
try {
Class.forName(driver);
// 注册驱动程序(可以注册多个驱动程序)
// DriverManager.registerDriver(driver);//有了Class.forName这里可以省略
conn = (Connection) DriverManager.getConnection(url, username, password);
System.out.println(conn);
} catch (Exception e) {
e.printStackTrace();
}
}
结果:
com.mysql.jdbc.JDBC4Connection@39477a84
参考:
http://www.importnew.com/16799.html
http://blog.csdn.net/xieyuooo/article/details/8502585
http://blog.csdn.net/u014726937/article/details/52836305
http://blog.csdn.net/qq_26676207/article/details/52953664#t1
http://www.cnblogs.com/gaojing/archive/2012/03/23/2413638.html