概述

JDBC(Java DataBase Connectivity) Java数据库连贯,其实就是利用java语言/程序连贯并拜访数据库的一门技术,之前咱们能够通过CMD或者navicat等工具连贯数据库,但在企业开发中,更多的是通过程序(java程序)连贯并拜访数据库,通过java程序拜访数据库,就要用到JDBC这门技术。

拜访数据库

(1)注册数据库驱动
Class.forName(com.mysql.jdbc.Driver);
(2)获取数据库连贯
Connection conn=DirverManager.getConnection
("jdbc:mysql://localhost:3306/test?characterEncoding","root","root")
(3)获取传输器
Statement stat = conn.createStatement();
(4)发送SQL到服务器执行并返回执行后果
String sql ="select * from account";
ResultSet rs = stat.executeQuery(sql);
(5)处理结果
while(rs.next()){
int id = rs.getInt("id");
String name = rs.getString("name");
double money = rs.getDouble("money");
System.out.println(id+":"+name+":"+money);}
(6)开释资源
rs.close();
stat.close();
conn.close();
System.out.println("Testjdbc.main()....");

罕用API

(1)注册数据库驱动
Class.forName("com.mysql.jdbc.Driver");
所谓的注册驱动,就是让JDBC程序加载mysql驱动程序,并治理驱动
驱动程序实现了JDBC API定义的接口以及数据库服务器的交互的性能,加载驱动是为了方便使用这些性能。
(2)获取连贯数据库的URL
Connection conn = DriverManager.getConnection
("jdbc:mysql://localhost:3306/test?characterEncoding","root","root");
DriverManager.getConnection()用于获取数据连贯,返回的Connection连贯对象是JDBC程序连贯数据库至关重要的一个对象。
参数1:"jdbc:mysql://localhost:3306/test"是连贯数据库的URL,用于指定拜访哪一个地位上的数据库服务器及服务器中的哪一个数据库,具体为:

当连贯本地数据库,并且端口为3306,能够简写为如下模式:
jdbc:mysql:///test

(3)Statement传输器对象
Statement stat = conn.createStatement();
该办法返回用于向数据库服务器发送sql语句的statement传输器对象
该对象提供了发送sql的办法:
executeQuery(String sql)--
用于向数据库发送查问类型的sql语句,返回一个ResultSet对象中
executeUpdate(String sql)--
用于向数据库发送更新(减少,删除,批改)类型的sql语句,返回一个int值,示意影响的行数
(4)ResultSet后果集对象
ResultSet对象用于封装sql语句查问的后果,也是一个十分重要的对象。该对象上提供了遍历数据及获取数据的办法。
--遍历数据行的办法--
next()-使指向数据行的箭头向下挪动一行,并返回一个布尔类型的后果,true示意箭头指向了一行数据,false示意箭头没有指向任何数据(前面也没有数据了)
--获取数据的办法--

getInt(int columnIndex)getInt(String columnLable)getString(int columnIndex)getString(String columnLable)getDouble(int columnIndex)getDouble(String columnLable)getObject(int columnIndex)getObjct(String columnLable)

--开释资源--

rs.close();stat.close();conn.close();

增删改查示例

新增:往simulation表中增加一个名称为john,money为3500的记录

@Testpublic void testInsert() {        Connection conn = null;        Statement stat = null;        ResultSet rs = null;        try{            //注册驱动并获取连贯            conn = jdbcUtil.getConn();            //获取传输器            stat = conn.createStatement();            //发送sql语句到服务器执行,并返回执行后果            String sql = "insert into simulation values(null,"john",3500)";            //处理结果            System.out.println("影响行数:"+rows);        }catch(Exception e){         e.printStackTrace();        }finally{            //通过jdbcUtil工具类中的close办法开释资源            jdbcUtil.close(conn,stat,rs);        }    }

批改:将simulation表中名称为john的记录,money批改为1500元

 @Test public void testUpdate(){    Connection conn = null;    Statement stat = null;    ResultSet rs = null;    try{    //通过工具类注册数据库并获取连贯    conn = jdbcUtil.getConn();    //获取传输器    stat = conn.createStatement();    //发送sql语句到服务器执行,并返回执行后果    String sql = "update account set money=1500 where name = 'john'";    //处理结果    System.out.println("影响行数"+rows);    } catch(Exeption e){      e.printStackTrace();    }finally{    //通过工具类中的close办法开释资源    jdbcUtil.close(conn,stat,rs);    } }

查问:查问account表中id为1的记录

 @Test public void testFindById(){  Connection conn = null;  Statement stat = null;  ResultSet rs = null;  try{  //通过工具类注册驱动并获取连贯  conn = jdbcUtil.getConn();  //获取传输器  stat = conn.createStatement();  //执行sql语句,返回执行后果  String sql = "select * from account where id=1";  //处理结果  if(rs.next()){   int id = rs.getInt("id");   String name = rs.getString("name");   double money = rs.getDouble("money");   System.out.println(id+":"+name+":"+money); }catch(Exception e){  e.printStackTrace(); }finally{   jdbcUtil.close(conn,stat,rs);  } } 

删除:删除account表中名称为john的记录

 @Test public void testDelete(){  Connection conn =null;  Statement stat = null;  ResultSet rs = null;  try{  //通过jdbcUtil工具类注册驱动并获取连贯  conn = jdbcUtil.getConn();  //获取传输器  stat = conn.createStatement();  //发送sql语句到服务器执行,并返回执行后果  String sql = "delete from account where name='john'";  int rows = stat.executeUpdate(sql);  //处理结果  System.out.println("影响行数:"+rows); }catch(Exception e){  e.printStackTrace(); }finally{  //通过jdbcUtil工具类中的close办法开释资源  jdbcUtil.close(conn,stat,rs);  } }

PrepareStatement

在下面的增删改查操作中,应用的是Statement传输器对象,而在开发中咱们用的更多的传输器对象是PreparedStatement对象,PreparedStatement是Statement的子接口,比Statement更加平安,并且可能进步程序执行的效率。

小结

总的来说JDBC就是Java数据库连贯,用来标准客户端程序如何来拜访数据库的,提供了诸如查问和更新数据库中数据的办法,咱们通常说的JDBC是面向关系型数据库的。