zoukankan      html  css  js  c++  java
  • JDBC与Java数据库编程基础

    一、JDBC 概述

      1、什么是JDBC    

        称为Java数据库连接,它是一种用于数据库访问的应用程序API,由一组用Java语言编写的类和接口组成,有了JDBC就可以用同一的语法对多种关系数据库进行访问,而不用担心其数据库操作语言的差异。

      2、JDBC优缺点

        优点:
          JDBC使得编程人员从复杂的驱动器调用命令和函数中解脱出来,可以致力于应用程序中的关键地方。
          JDBC支持不同的关系数据库,这使得程序的可移植性大大加强。
          JDBC API是面向对象的,可以让用户把常用的方法封装为—个类,以备后用
        缺点:
          使用JDBC,访问数据记录的速度会受到一定程度的影响
          JDBC结构中包含不同厂家的产品,这就给更改数据源带来了很大的麻烦。

      3、JDBC核心接口与类
      JDBC核心类库包含在java.sql包中。
        类
          DriverManager:负责管理JDBC驱动程序。使用JDBC驱动程序之前,必须先将驱动程序加载并注册后才可以使用,同时提供方法来建立与数据库的连接。
          SQLException-有关数据库操作的异常
        接口:
          Connection:特定数据库的连接(会话)。在连接上下文中执行SQL语句并返回结果。
          PreparedStatement:表示预编译的 SQL 语句的对象。
          Statement:用于执行静态 SQL 语句并返回它所生成结果的对象。
          ResultSet :表示数据库结果集的数据表,通常通过执行查询数据库的语句生成 。
          CallableStatement :用于执行 SQL 存储过程的接口

    二、创建 JDBC应用

      1、创建JDBC应用程序的步骤
        1.载入JDBC驱动程序
        2.定义连接URL
        3.建立连接
        4.创建Statement对象
        5.执行查询或更新
        6.结果处理
        7.关闭连接

      2、JDBC连接Mysql

    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    
    public class Test5 {
        public static void main(String[] args) {
            String url = "jdbc:mysql://127.0.0.1:3306/scott";
            String username = "root";
            String password = "root";
            Connection conn = null;
            PreparedStatement pstmt = null;
            ResultSet rs = null;
            try {
                //1、加载驱动
                Class.forName("com.mysql.jdbc.Driver");
                //2、获得连接
                conn = DriverManager.getConnection(url, username, password);
                //3、创建sql语句
                String sql = "select * from dept where loc = ?";
                //4、创建PreparedStatement
                pstmt = conn.prepareStatement(sql);
                //第一个参数指索引,第二个参数要作为查询语句的一部分
                pstmt.setString(1, "New YORK");
                //5、执行查询
                rs = pstmt.executeQuery();
                //6、遍历结果集
                while(rs.next()){
                    System.out.println(rs.getString("dname"));
                }
            } catch (ClassNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }finally{
                //7、关闭流
                if(rs != null){
                    try {
                        rs.close();
                    } catch (SQLException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                }
                if(pstmt != null){
                    try {
                        pstmt.close();
                    } catch (SQLException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                }
                if(conn != null){
                    try {
                        conn.close();
                    } catch (SQLException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                }
            }
        }
    }

      3、JDBC连接Oracle

    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.PreparedStatement;
    import java.util.Date;
    
    public class JdbcTest{
        publicstatic void main(String[] args) {
            String driver = "oracle.jdbc.OracleDriver";    //驱动标识符
            String url = "jdbc:oracle:thin:@localhost:1521:orcl"; //链接字符串
            // url ="jdbc:oracle:thin:@10.0.30.64:1521:orcl";  // 连接远程的数据库可以这么写
            String user = "scott";         //数据库的用户名
            String password = "tiger";     //数据库的密码
            Connection con = null;
            PreparedStatement pstm = null;
            ResultSet rs = null;
            boolean flag = false;
    
            try {
                Class.forName(driver);
                con = DriverManager.getConnection(url,user, password);
                String sql = "select * from emp";
                pstm =con.prepareStatement(sql);
                rs = pstm.executeQuery();
                while(rs.next()) {
                    int empno = rs.getInt("empno");
                    String ename =rs.getString("ename");
                    double sal = rs.getDouble("sal");
                    Date hiredate =rs.getDate("hiredate");
                    int deptno = rs.getInt(("deptno"));
                    System.out.println(empno +"	"+ ename +"	"+ sal +"	"+ hiredate +"	"+ deptno);
                }
    
                flag = true;
            } catch(ClassNotFoundException e) {
                e.printStackTrace();
            }
            catch(SQLException e) {
                e.printStackTrace();
            }
            finally {
                if(rs != null) {
                    try {
                        rs.close();
                    } catch (SQLException e) {
                        e.printStackTrace();
                    }
                }
    
                // 关闭执行通道
                if(pstm !=null) {
                    try {
                        pstm.close();
                    } catch (SQLException e) {
                        e.printStackTrace();
                    }
                }
    
                // 关闭连接通道
                try {
                    if(con != null &&(!con.isClosed())) {
                        try {
                            con.close();
                        } catch (SQLException e) {
                           e.printStackTrace();
                        }
                    }
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
    
            if(flag) {
                System.out.println("执行成功!");
            } else {
                System.out.println("执行失败!");
            }
        }
    }

       4、ResultSet接口的getXxx 方法

      5、JDBC日期时间处理
        对于数据库种不同的时间类型,要分别采用与之相对应的Java
        (1)包装类来存取:
          日期类型用java.sql.Date
          时间类型用java.sql.Time
          日期/时间类型用java.sql.Timestamp;
          getTimestamp()可以把年月日时分秒都取出来,getDate()只能取出年月日,getTime()只能取出时分秒。
        (2)JDBC的日期/时间类型转换为字符串
          Timestamp timeStamp = //通过数据库访问获取到该数据
          SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
          String str = sdf.format(timeStamp);

        (3)java.sql.Timestamp如何转换为java.util.Date
          java.sql.Timestamp是java.util.Date的子类,不需要做任何转换直接赋值即可:
            java.sql.Timestamp ts;
            java.util.Date utilDate;
            utilDate = ts;
            java.util.Date如何转换为java.sql.Timestamp
          java.util.Date是java.sql.Timestamp的父类,要这样转换
            java.sql.Timestamp ts;
            java.util.Date utilDate;
            ts.setTime(utilDate.getTime());

      6、JDBC API:
        DriverManager
        Connection
        Statement
        ResultSet
        SQLException

  • 相关阅读:
    3. Longest Substring Without Repeating Characters
    2. Add Two Numbers
    Concurrent Programming(5)
    Concurrent Programming(4)
    Concurrent Programming(3)
    Concurrent Programming(2)
    Concurrent Programming(1)
    Lua用table模拟二维数组
    C#深入研究ArrayList动态数组自动扩容原理
    ==与Equals的作用
  • 原文地址:https://www.cnblogs.com/makangning/p/9648415.html
Copyright © 2011-2022 走看看