jdbc
Posted π+1
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jdbc相关的知识,希望对你有一定的参考价值。
一、JDBC概述
JDBC(java database connectivity)是操作数据库的标准规范。JDBC是实现数据库驱动的接口(规范)。
JDBC规范的四个核心对象(一个类三个接口)
DriverManager:用于注册驱动(用于创建通信的桥梁connection)----------类
Connection:表示与数据库的连接 ----------接口
Statement:操作数据库sql语句的对象 ----------接口
ResultSet:结果集(客户端的) ----------接口
二、实现JDBC操作
1.注册驱动
2.创建连接
3.得到执行sql语句的Statement对象
4.执行sql语句,并返回结果
5.处理结果
6.关闭资源
//1.注册驱动 DriverManager.registerDriver(new com.mysql.jdbc.Driver()); //2.获取连接 Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/day06","root","1234"); //3.得到执行sql的对象Statement Statement stmt = conn.createStatement(); //4.执行sql语句,并返回处理结果 ResultSet rs = stmt.executeQuery("select * from users"); //5.处理结果 while(rs.next()){ System.out.println(rs.getObject(1)); System.out.println(rs.getObject(2)); System.out.println(rs.getObject(3)); System.out.println(rs.getObject(4)); System.out.println(rs.getObject(5)); System.out.println("=========================="); } //6.关闭资源 rs.close(); stmt.close(); conn.close();
三、JDBC常用的类和接口详解
1.java.sql.Drivermanager类:创建连接
(1)注册驱动
DriverManager.registerDriver(new com.mysql.jdbc.Driver());
缺点是:驱动会被注册两次;强烈依赖数据库的驱动
因此:使用Class.foeName("com.mysql.jdbc.Driver()");
(2)与数据库建立连接
Connection getConnection(String url, String user, String password)
Drivermanager.getConnection("jdbc:mysql://localhost:3306/xxx", "root", "123");
注:mysql: jdbc:mysql://localhost:3306/xxx 或者 jdbc:mysql:///xxx(默认本机连接)
oracle: jdbc:oracle:thin:@localhost:1521:sid
2.java.sql.Connection接口
所有与数据库交互都是基于连接对象的,因此创建操作sql语句的对象
Statement createStatement();
3.java.sql.Statement接口
操作sql语句,并返回相应结果的对象
ResultSet executeQuery(String sql); //根据查询语句返回结果集。只能执行select语句。
int executeUpdate(String sql) //根据执行的(insert update delete)语句,返回受影响的行数。
boolean execute(String sql) //可以执行任意sql语句。仅当执行select语句,且有返回结果时返回true, 其它语句都返回false;
4.java.sql.ResultSet接口
(1)用于封装结果集
1) 提供一个游标,默认游标指向结果集第一行之前。
2) 调用一次next(),游标向下移动一行。
3) 提供一些get方法。
封装数据的方法
Object getObject(int columnIndex); //根据序号取值,索引从1开始
Object getObject(String ColomnName); //根据列名取值。
java的数据类型与数据库中的类型的关系
byte <==========> tityint
short <==========> smallint
int <==========> int
long <==========> bigint
float <==========> float
double <==========> double
String <==========> char varchar
Date <==========> date
(2)b、可移动游标的方法
boolean next(); //将光标从当前位置向后移一行。
boolean previous(); //将光标移动到此 ResultSet 对象的上一行。
boolean absolute(int row); //参数是当前行的索引,从1开始
void afterLast();//将光标移动到末尾,位于最后一行之后。
void beforeFirst();//将光标移动到开头,位于第一行之前。
5.释放资源
//1.加载驱动 Class.forName("com.mysql.jdbc.Driver"); //2.获取连接 Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/day06","root","1234"); //3.得到执行sql的对象Statement Statement stmt = conn.createStatement(); //4.执行sql语句,并返回处理结果 ResultSet rs = stmt.executeQuery("select * from users"); //5.处理结果 while(rs.next()){ System.out.println(rs.getObject(1)); System.out.println(rs.getObject(2)); System.out.println(rs.getObject(3)); System.out.println(rs.getObject(4)); System.out.println(rs.getObject(5)); System.out.println("=========================="); } //6.关闭资源 rs.close(); stmt.close(); conn.close();
四、SQL注入问题
preparedStatement:预编译对象, 是Statement对象的子类。
特点是:性能要高、会把sql语句先编译、sql语句中的参数会发生变化,过滤掉用户输入的关键字。
以上是关于jdbc的主要内容,如果未能解决你的问题,请参考以下文章