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的主要内容,如果未能解决你的问题,请参考以下文章

面试常用的代码片段

mysql jdbc源码分析片段 和 Tomcat's JDBC Pool

JDBC操作数据库之查询数据

如何在片段中填充列表视图?

在 myeclipse中进行连接sql server的测试

MYBATIS05_ifwherechoosewhentrimsetforEach标签sql片段