JDBC

JDBC简介:

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

JDBC原理:

  • JDBC是以前SUN公司定义的一套访问数据库的接口(没有具体实现),是一套标准,具体的实现是由各大数据库厂家去实现,每个数据库厂家都有自己的JDBC实现,也就是JDBC驱动实现类,Java应用程序连接指定数据库,需要使用厂家提供的JDBC驱动才能连接。(这里其实就是java多态的一种体现,一个及接口可以有很多具体的实现)

JDBC连接数据库的四个步骤:

  1. 加载数据库驱动:Class.forName("com.mysql.jdbc.Driver")
  2. 连接数据库:Connectiong conn =  DriverManager.getConnection("jdbc:mysql://localhost:3306/数据库名","用户名root","密码123456")
  3. 使用语言操作数据库:
  4. 关闭数据库连接,释放资源:conn.close()

在项目中配置数据库驱动:

  • 右击项目->Build Path->Configure Build path->Add Exteranl JARs

加载数据库驱动:

  • Mysql驱动名(com.mysql.jdbc.Driver);
  • 加载方式(Class.forName(驱动名))

连接及关闭数据库:

  1. DiverManager驱动管理类,主要负责获取一个数据库的连接;static Connection getConnection(String url,String user,String password) 试图建立到给定数据库URL的连接;
  2. MySQL数据库的连接地址格式;jdbc:mysql://IP地址:端口号/数据库名称;jdbc协议:JDBC URL中的协议总是jdbc;子协议:驱动程序名或数据库简介机制(这种机制可由一个或多个驱动程序支持)的名称,如mysql;子名称:一种表示数据库的方法,必须遵循“/主机名:端口/子协议”的标准URL命名约定,如//localhost:3306/db_book;
  3. Connection接口与特定数据库的连接(会话):void close() 立即释放此Connection对象的数据库和JDBC资源,而不是等待他们被自动释放

Statement接口引入:

  • 作用:用于执行静态SQL语句并返回它所生产结果的对象; int executeUpdate(String sql)执行给定SQL语句,该语句可能为INSERT、UPDATE或DELETE语句,或者不返回任何内容的SQL语句(如SQL DDL语句)

使用Statement接口实现添加数据操作:

  • String sql = "insert into 数据库 values()";Statement stmt = con.createStatement();//创建Statement     stmt.executeUpdate(sql);

PreparedStatement接口引入:

  • PreparedStatement是Statement的子接口,属于预处理操作,与直接使用Statement不同的是,PreparedStatement在操作时,是先在数据库表中准备好了一条SQL语句,但是此SQL语句的具体内容暂时不设置,而是之后再进行设置

使用PreparedStatement接口实现添加数据操作:

  • String sql = "insert into 数据库 values(?,?)";PreparedStatement pstmt = con.prepareStatement(sql);pstmt.setString(1,book.getBookName());

ResultSet结果集的引入:

  • 当我们查询数据库时,返回的是一个二维的结果集,我们这时候需要使用ResultSet来遍历结果集,获取每一行的数据。

使用ResultSet遍历查询结果:

  • String sql = "select * from 数据库";  PreparedStatement pstmt = con.prepareStatement(sql); ResultSet rs = pstmt.executeQuery();  while(rs.next()){ int id = rs.getInt(1);   String name = rs.getString(2); }
    • next()将光标从当前位置向前移一行;返回Boolean值
    • getString(int columnIndex)以Java编程语言中String的形式获取此ResultSet对象的当前行中指定列的值;

处理大数据对象:

  1. CLOB数据(处理文本):Clob c = rs.getClob("content");   String  content = c.getSubString(1,(int)c.length());
  2. BLOG数据(处理二进制):

使用CallableStatement接口调用存储过程:

  1. CallableStatement主要是调用数据库中的存储过程,CallableStatement也是PreparedStatement接口的子接口。在使用CallableStatement时可以接收存储过程的返回值
  2. void registerOutParameter(int parameterIndex,int sqlType)     按顺序位置parameterIndex将OUT参数注册为JDBC类型sqlType

posted on 2017-12-27 11:44  fighting_ty  阅读(106)  评论(0)    收藏  举报

导航