JDBC开发步骤

本文记录Java学习过程中遇到的JDBC的开发步骤~

1. 导入驱动jar包

创建lib目录,用于存放当前项目需要的所有jar包

选择jar包,右键执行build path / Add to Build Path

2. 注册驱动

JDBC规范定义驱动接口:java.sql.Driver,MySql驱动包提供了实现类:com.mysql.jdbc.Driver

DriverManager工具类,提供注册驱动的方法registerDriver(),方法的参数是java.sql.Driver,所以我们可以通过如下语句进行注册:

DriverManager.registerDriver(new com.mysql.jdbc.Driver());

以上代码不推荐使用,存在两方面不足

硬编码,后期不易于程序扩展和维护
驱动被注册两次。

通常开发我们使用Class.forName() 加载一个使用字符串描述的驱动类。

Class.forName("com.mysql.jdbc.Driver");

如果使用Class.forName()将类加载到内存,该类的静态代码将自动执行。

通过查询com.mysql.jdbc.Driver源码,我们发现Driver类“主动”将自己进行注册。

代码如下:

public class Driver extends NonRegisteringDriver implements java.sql.Driver {
	static {
		try {
			java.sql.DriverManager.registerDriver(new Driver());
		} catch (SQLException E) {
			throw new RuntimeException("Can't register driver!");
		}
	}
……
}

3. 获得链接

Connection con = DriverManager.getConnection
(“jdbc:mysql://localhost:3306/mydb”,”root”,”root”);

获取连接需要方法DriverManager.getConnection(url,username,password),三个参数分别表示,url 需要连接数据库的位置(网址)user用户名  password 密码

url比较复杂,下面是mysql的url:

jdbc:mysql://localhost:3306/mydb
JDBC规定url的格式由三部分组成,每个部分中间使用冒号分隔。
     第一部分是jdbc,这是固定的;
     第二部分是数据库名称,那么连接mysql数据库,第二部分当然是mysql了;
     第三部分是由数据库厂商规定的,我们需要了解每个数据库厂商的要求,mysql的第三部分分别由数据库服务器的IP地址(localhost)、端口号(3306),以及DATABASE名称(mydb)组成。

4. 获得语句执行平台

String sql = "某SQL语句";
获取Statement语句执行平台:Statement stmt = con.createStatement();

常用方法:

  • int executeUpdate(String sql); --执行insert update delete语句.
  • ResultSet executeQuery(String sql); --执行select语句.
  • boolean execute(String sql); --执行select返回true 执行其他的语句返回false.

5. 处理结果集(select语句)

ResultSet实际上就是一张二维的表格,我们可以调用其boolean next()方法指向某行记录,当第一次调用next()方法时,便指向第一行记录的位置,这时就可以使用ResultSet提供的getXXX(int col)方法(与索引从0开始不同个,列从1开始)来获取指定列的数据:

rs.next();//指向第一行
rs.getInt(1);//获取第一行第一列的数据

常用方法:

  • Object getObject(int index) / Object getObject(String name) 获得任意对象
  • String getString(int index) / Object getObject(String name) 获得字符串
  • int getInt(int index) / Object getObject(String name) 获得整形
  • double getDouble(int index) / Object getObject(String name) 获得双精度浮点型

6. 释放资源

与IO流一样,使用后的东西都需要关闭!关闭的顺序是先得到的后关闭,后得到的先关闭。

rs.close();
stmt.close();
con.close();

标签: none