你的位置:首页 > Java教程

[Java教程]JDBC简介及编码步骤


一、什么是JDBC

JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序。

 

二、JDBC编码步骤

0、前提:拷贝数据库的驱动到构建路径中(classpath)

1、注册驱动

2、获取与数据库的链接

3、创建代表SQL语句的对象

4、执行SQL语句

5、如果是查询语句,需要遍历结果集

6、释放占用的资源

 

三、代码实现

1、在终端或者navicat中创建一个表:users, 如下图:

 

2、创建一个名为JdbcDemo1的类,并导入包:mysql-connector-java-5.0.8-bin.jar, JdbcDemo1代码如下:

 1 package com.bigshow1949.jdbc; 2  3 import java.sql.Connection; 4 import java.sql.DriverManager; 5 import java.sql.ResultSet; 6 import java.sql.SQLException; 7 import java.sql.Statement; 8  9 /*10 create table users(11   id int primary key auto_increment,12   name varchar(40),13   password varchar(40),14   email varchar(60),15   birthday date16 )character set utf8 collate utf8_general_ci;17 18 insert into users(name,password,email,birthday) values('zs','123456','zs@sina.com','1980-12-04');19 insert into users(name,password,email,birthday) values('lisi','123456','lisi@sina.com','1981-12-04');20 insert into users(name,password,email,birthday) values('wangwu','123456','wangwu@sina.com','1979-12-04');21 */22 23 //JDBC的编码步骤:24 //查询users表中的所有数据,打印到控制台上25 public class JdbcDemo1 {26 27   public static void main(String[] args) throws SQLException {28 //    1、注册驱动29     DriverManager.registerDriver(new com.mysql.jdbc.Driver());30 //    2、获取与数据库的链接31     Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/day15", "root", "sorry");32     //System.out.println(conn.getClass().getName()); 要想知道具体类型,就这么办33 //    3、创建代表SQL语句的对象34     Statement stmt = conn.createStatement();35 //    4、执行SQL语句36     ResultSet rs = stmt.executeQuery("select id,name,password,email,birthday from users");37 //    5、如果是查询语句,需要遍历结果集38     while(rs.next()){39       System.out.println("---------------------");40       System.out.println(rs.getObject("id"));41       System.out.println(rs.getObject("name"));42       System.out.println(rs.getObject("password"));43       System.out.println(rs.getObject("email"));44       System.out.println(rs.getObject("birthday"));45     }46 //    6、释放占用的资源47     rs.close();48     stmt.close();49     conn.close();50   }51 52 }

 

 

3、运行代码,打印结果:

 

成功连接, 并读取了数据库中的数据!!!

 

4、简单优化:DriverManager跟Connection

DriverManager作用:

a、注册驱动:

方式一:(不建议使用)

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

原因:1、依赖具体驱动。2、导致驱动注册2遍

方式二:(建议)

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

b、获取与数据库的链接

url:SUN和数据库厂商间的协议。具体查阅数据库的文档。

public static Connection getConnection(String url,String user,String password) throws SQLException

public static Connection getConnection(String url,Properties info) throws SQLException

public static Connection getConnection(String url) throws SQLException

 

Connection作用:

所有的数据库操作都是基于链接之上的。

Statement createStatement():创建向数据库发送sql的statement对象。

 

所以代码修改为:

 1 package com.bigshow1949.jdbc; 2  3 import java.sql.Connection; 4 import java.sql.DriverManager; 5 import java.sql.ResultSet; 6 import java.sql.SQLException; 7 import java.sql.Statement; 8 import java.util.Properties; 9 10 //DriverManager详解11 public class JdbcDemo2 {12 13   public static void main(String[] args) throws Exception {14     //方式一:不建议使用15 //    DriverManager.registerDriver(new com.mysql.jdbc.Driver());16     //方式二:17     Class.forName("com.mysql.jdbc.Driver");18     19 //---------------------------------------------------------------------------------------20 //    2、获取与数据库的链接21     //方式一:22 //    Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/day15", "root", "sorry");23     24     //方式二:25 //    Properties props = new Properties();26 //    props.setProperty("user", "root");// 参数名:参考数据库的文档27 //    props.setProperty("password", "sorry");28 //    props.setProperty("useUnicode", "true");//编码有关的参数29 //    props.setProperty("characterEncoding", "utf8");30 //    Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/day15",props);31     32     //方式三33     Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/day15?user=root&password=sorry");34     35     //System.out.println(conn.getClass().getName()); 要想知道具体类型,就这么办36 //    3、创建代表SQL语句的对象37     Statement stmt = conn.createStatement();38 //    4、执行SQL语句39     ResultSet rs = stmt.executeQuery("select id,name,password,email,birthday from users");40 //    5、如果是查询语句,需要遍历结果集41     while(rs.next()){42       System.out.println("---------------------");43       System.out.println(rs.getObject("id"));44       System.out.println(rs.getObject("name"));45       System.out.println(rs.getObject("password"));46       System.out.println(rs.getObject("email"));47       System.out.println(rs.getObject("birthday"));48     }49 //    6、释放占用的资源50     rs.close();51     stmt.close();52     conn.close();53   }54 55 }