在使用以前咱们先了解一下JDBC的概念, JDBC的全称是数据库链接(Java Database Connectivity),它是一套用于执行SQL语句时的API,应用程序能够经过这套API链接到关系型数据库,而且使用SQL语句来完成数据库中的查询,添加,更改,删除等操做.。
不一样类型的数据库内部处理数据的方式也是不一样的,若是直接用数据库厂商提供的方法来创建访问数据,应用程序的可移植性就会变得很是差,若是某个用户在当前的程序中使用的是MySQL的数据库,若是换成Oracle的数据库这样须要改动大量的代码,有了JDBC这样的状况就不存在了,由于JDBC 要求数据库的厂商按照统一的要求来提供数据库的驱动,这就使代码的通用性更强.java
由上图看出,JDBC在应用程序和数据库之间是一个桥梁的做用,不一样的驱动与不一样的数据链接, 链接后进行相应的操做mysql
Driver接口是全部JDBC驱动程序必须实现的接口,该接口专门给数据库厂商使用。在编写JDBC程序时,必需要把全部数据库驱动程序或者类库加载到classpath中去。web
方法 | 做用 |
---|---|
regsiterDriver(Driver driver) | 用于向DriverManager中注册JDBC的驱动程序 |
getConnection(String url, String user,String password) | 创建与数据库的链接 |
方法 | 做用 |
---|---|
createStatement( ) | 建立statement对象将SQL语句发送到数据库中 |
prepareStatement( ) | 建立preparestatement对象将SQL语句发送到数据库中 |
prepareCall() | 建立CallableStatement对象调用数据库的存储过程 |
注意:在这里咱们看到createStatement和prepareStatement方法都是建立对象将SQL语句发送到数据库中,可是有什么不一样呢?咱们暂且用createStatement方法,prepareStatement方法咱们以后再谈它的用途。sql
方法 | 做用 |
---|---|
execute(String sql) | 执行SQL 语句返回boolean类型的值 若是为true表示有结果,经过ResultSet方法查询结果 |
executeUpdate(String sql) | 执行SQL语句中的 insert delete update 方法返回值为int类型 |
executeQuery | 执行SQL中select语句 |
方法 | 描述 |
---|---|
getString(String name) | 获取String类型的值 ,name表明字段的名称 |
getInt(int index) | 获取int类型的值,index表明字段的名称 |
next() | 当前位置到下一行 |
previous() | ResultSet的上一行 |
absolute(int row) | ResultSet的指定位置 |
在写代码之气须要把MySQL的jar包导入到项目中,找到MySQL\Connector J 8.0 中的mysql-connector-java-8.0.14.jar文件导入工程中数据库
解释了创建链接数据库的步骤和经常使用的API,接下来就看看最基础的代码如何实现的:svg
import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class pracjdbc { public static void main(String [] args) { try { //1.注册驱动 DriverManager.registerDriver(new com.mysql.cj.jdbc.Driver()); /*2.创建数据库的链接 获取参数依次是url,user,password url链接本地数据库,user 用户名称,password数据库密码*/ Connection conn= DriverManager.getConnection("jdbc:mysql://localhost/studentinformation?serverTimezone=GMT%2B8", "root", "81604152"); //3.建立statement对象 Statement st=conn.createStatement(); String sql = "select * from info"; //4.执行sql语句 ResultSet rs = st.executeQuery(sql); //5.遍历查询数据 while(rs.next()) { int id =rs.getInt("id"); String name = rs.getString("name"); System.out.println(id+":"+name); } //6.释放资源 conn.close(); st.close(); rs.close(); } catch (SQLException e) { e.printStackTrace(); } } }
刚刚写最进本的的代码如今咱们看一下在刚刚的基础上稍微作一些改进测试
try { if(conn != null) { conn.close(); } } catch (SQLException e) { e.printStackTrace(); }finally{ conn = null; }
这样写过于冗长,统一写一个类取完成这个操做url
import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class JDBCutils { public static void ReleaseAll(Connection conn, ResultSet rs, Statement st) { CloseConn(conn); CloseSt(st); CloseRs(rs); } public static void ReleaseAll(Connection conn, Statement st) { CloseConn(conn); CloseSt(st); } private static void CloseConn(Connection conn) { try { if(conn != null) { conn.close(); } } catch (SQLException e) { e.printStackTrace(); }finally { conn = null; } } private static void CloseRs(ResultSet rs) { try { if(rs != null) { rs.close(); } } catch (SQLException e) { e.printStackTrace(); }finally { rs = null; } } private static void CloseSt(Statement st) { try { if(st != null) { st.close(); } } catch (SQLException e) { e.printStackTrace(); }finally { st = null; } } }
再来看看创建驱动的步骤 进入底层源码spa
static { try { java.sql.DriverManager.registerDriver(new Driver()); } catch (SQLException E) { throw new RuntimeException("Can't register driver!"); } }
Driver中已经创建了驱动实际上咱们本身创建驱动就是已经多余了,
修改代码以下.net
Class.forName("com.mysql.cj.jdbc.Driver");
完整代码以下:
import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; public class pracjdbc { public static void main(String [] args) { Connection conn= null; Statement st = null; ResultSet rs = null; try { Class.forName("com.mysql.cj.jdbc.Driver"); //DriverManager.registerDriver(new com.mysql.cj.jdbc.Driver()); conn= DriverManager.getConnection("jdbc:mysql://localhost/studentinformation?serverTimezone=GMT%2B8", "root", "81604152"); st=conn.createStatement(); String sql = "select * from info"; rs = st.executeQuery(sql); while(rs.next()) { int id =rs.getInt("id"); String name = rs.getString("name"); System.out.println(id+":"+name); } } catch (Exception e) { e.printStackTrace(); }finally { JDBCutils.ReleaseAll(conn, rs, st); } } }
经过JDBC创建数据库的基本创建链接就完成了,但这也只是基础版,经过配置文件,添加Junit测试增删查改方法,使用数据库链接池方法在以后会提到,因此看完基本的链接就来看一下进一步如何改进吧~