JDBC(Java DataBase Connectivity) Java数据库链接,其实就是利用java语言/程序链接并访问数据库的一门技术,以前咱们能够经过CMD或者navicat等工具链接数据库,但在企业开发中,更多的是经过程序(java程序)链接并访问数据库,经过java程序访问数据库,就要用到JDBC这门技术。java
(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()....");mysql
(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:///testsql
(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的记录服务器
@Test public 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的记录spa
@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的记录code
@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); } }
在上面的增删改查操做中,使用的是Statement传输器对象,而在开发中咱们用的更多的传输器对象是PreparedStatement对象,PreparedStatement是Statement的子接口,比Statement更加安全,而且可以提升程序执行的效率。对象
总的来讲JDBC就是Java数据库链接,用来规范客户端程序如何来访问数据库的,提供了诸如查询和更新数据库中数据的方法,咱们一般说的JDBC是面向关系型数据库的。