一、什么是JDBC?为什么使用JDBC?
1、JDBC的全称是Java Data Base Connectivity(Java数据库连接)。SUN公司为使Java程序灵活的访问各种不同的关系型数据库提供的规则。
2、使用JDBC的原因:
1)降低Java程序操作数据库的成本。
2)使Java程序灵活移植。
3、开发JDBC需要导入相应JDBC的数据库实现(即数据库驱动)。MySql的数据库驱动包是mysql-connector-java-5.0.8-bin.jar。
二、JDBC连接数据库的各个步骤
1、注册驱动:DriverManager.registerDriver(new com.mysql.jdbc.Driver());
注意:上述代码会向DriverManager注册二次相同的MySQL驱动,其中一次在Driver实现类中。推荐使用以下代码间接注册数据库驱动:
Class.forName("com.mysql.jdbc.Driver");
这种方式的优点是:1)只需注册一次。2)无需导入与具体数据库驱动相关的包。
2、获取数据库连接对象:Connection conn=DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/mydb2","root","root");
3、关闭流:
1)依次按ResultSet->Statement->Connection顺序关闭。
2)在能完成业务的情况下尽早关闭。
三、JDBC的六个固定步骤:
1、注册数据库驱动[利用反射]
2、取得数据库连接对象Connection
3、创建SQL对象
4、执行SQL命令,并返回结果集
5、处理结果集
6、依次关闭结果集
四、MySql操作示例:
1、db.properties文件内容如下:
driver=com.mysql.jdbc.Driver url=jdbc:mysql://localhost:3306/mydb3 user=root password=root
2、JdbcUtil.java文件内容如下:
package com.gnnuit.web.jdbc; import java.io.IOException; import java.io.InputStream; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.Properties; /** * JDBC工具类:关闭流和取得连接 * * @author YLY * */ public final class JdbcUtil { private static String driver; private static String url; private static String user; private static String password; //静态块:加载配置文件 static { Properties prop = new Properties(); InputStream is = JdbcUtil.class.getClassLoader().getResourceAsStream( "com/gnnuit/web/jdbc/db.properties"); try { prop.load(is); driver = prop.getProperty("driver"); url = prop.getProperty("url"); user = prop.getProperty("user"); password = prop.getProperty("password"); } catch (IOException e) { e.printStackTrace(); } } //静态块:注册驱动 static { try { Class.forName(driver); } catch (ClassNotFoundException e) { e.printStackTrace(); } } // 获取MySql数据库的连接 public static Connection getMySqlConnection() { Connection conn = null; try { conn = DriverManager.getConnection(url, user, password); } catch (SQLException e) { e.printStackTrace(); } return conn; } // 关闭数据库的连接 public static void closeConnection(Connection conn) { if (conn != null) { try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } // 关闭数据库的连接 public static void closeStatement(Statement stmt) { if (stmt != null) { try { stmt.close(); } catch (SQLException e) { e.printStackTrace(); } } } // 关闭数据库的连接 public static void closeResultSet(ResultSet rs) { if (rs != null) { try { rs.close(); } catch (SQLException e) { e.printStackTrace(); } } } }
3、CRUD.java文件内容如下:
package com.gnnuit.web.jdbc; import java.sql.Connection; import java.sql.ResultSet; import java.sql.Statement; import org.junit.Test; public class CRUD { @Test public void create() { Connection conn = null; Statement stmt = null; String sql = "insert into student(id,name) values(14,‘杨中科‘)"; try { conn = JdbcUtil.getMySqlConnection(); stmt = conn.createStatement(); int rows = stmt.executeUpdate(sql); System.out.println(rows > 0 ? rows : "失败"); } catch (Exception e) { e.printStackTrace(); } finally { JdbcUtil.closeStatement(stmt); JdbcUtil.closeConnection(conn); } } @Test public void read() { Connection conn = null; Statement stmt = null; ResultSet rs = null; String sql = "select * from student"; try { conn = JdbcUtil.getMySqlConnection(); stmt = conn.createStatement(); rs = stmt.executeQuery(sql); while (rs.next()) { String name = rs.getString("name"); System.out.println(name); } } catch (Exception e) { e.printStackTrace(); } finally { JdbcUtil.closeResultSet(rs); JdbcUtil.closeStatement(stmt); JdbcUtil.closeConnection(conn); } } @Test public void update() { Connection conn = null; Statement stmt = null; ResultSet rs = null; String sql = "update student set name=‘样样‘ where id=14"; try { conn = JdbcUtil.getMySqlConnection(); stmt = conn.createStatement(); int rows = stmt.executeUpdate(sql); System.out.println(rows > 0 ? rows : "失败"); } catch (Exception e) { e.printStackTrace(); } finally { JdbcUtil.closeResultSet(rs); JdbcUtil.closeStatement(stmt); JdbcUtil.closeConnection(conn); } } @Test public void delete() { Connection conn = null; Statement stmt = null; ResultSet rs = null; String sql = "delete from student where id=14"; try { conn = JdbcUtil.getMySqlConnection(); stmt = conn.createStatement(); int rows = stmt.executeUpdate(sql); System.out.println(rows > 0 ? rows : "失败"); } catch (Exception e) { e.printStackTrace(); } finally { JdbcUtil.closeResultSet(rs); JdbcUtil.closeStatement(stmt); JdbcUtil.closeConnection(conn); } } }