zoukankan      html  css  js  c++  java
  • JDBC

    JDBC的概念:java database connectivity        (java 数据库连接 )

    本质就是 sun公司定义的一套操作所有关系型数据库的规则,即接口。各各数据库厂商去实现接口,提供jar包,我们使用jar包中的实现类来操作数据库

    package D1;
    
    import java.sql.*;
    
    /**
     * @Author: {---Kyousuke---}
     * @Date: 2019/8/9 20:08
     */
    public class Demo1 {
        private static String dbDriver="com.mysql.Driver";
        private static String dbUrl="jdbc:mysql://localhost:3306/myDatabase";
        private static String dbUser="root";
        private static String dbPwd="root";
        public static void main(String[] args) {
            Connection conn =null;
            Statement state =null;
            try {
                Class<?> c = Class.forName(dbDriver);
                conn = DriverManager.getConnection(dbUrl, dbUser, dbPwd);
                state = conn.createStatement(1004, 1007);
            
                String sql="select * from student3";
                ResultSet rs = state.executeQuery(sql);//返回一个ResultSet集合
    //            int i = state.executeUpdate(sql);//返回受影响记录个数
                System.out.println("姓名,id,年龄");
                while (rs.next()) {
                    System.out.println(rs.getString("name") + "," + rs.getInt("id") + "," + rs.getInt("age"));
                }
            } catch (Exception e) {
                e.printStackTrace();
            }finally {
                closeJDBC(conn,state);
            }
        }
        public static void closeJDBC(Connection conn,Statement state){
    
            if(state!=null) {
                try {
                    state.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if(conn!=null) {
                try {
                    conn.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
    }

    结果:

    JDBC的现实要有7个步骤
    1.导入jar包
    2.注册驱动
    3.使用managerDriver获得connection对象
    4.使用connection对象获得statement对象
    5.使用statement对象执行sql语句
    6.处理结果
    7.释放资源

    1.导入jar包:

    2.注册驱动:
    private static String dbDriver="com.mysql.Driver";
    这个字符串代表你的jar包下的com.mysql包下的driver类的路径
    Class<?> c = Class.forName(dbDriver);

    class.fromName 其实就是把指定的类的.class文件加载进内存,返回一个class对象
    那么肯定就有人为什么这么写就是注册驱动了呢

    这是我们导入的jar包下的driver类 ,static代码块会随着class文件被加载进内存而被执行
    这样我们就能使用DriverManager 来获取connection对象
    这里提一点,如果你的mysql是5.0以上,可以不写注册驱动,在使用DriverManager时会自动帮你注册驱动
    3.使用managerDriver获得connection对象
    在获取对象前你需要定义三个String对象
    private static String dbUrl="jdbc:mysql://localhost:3306/myDatabase";
    这个字符串对象代表指定连接哪一个数据库 这里的mydatabase 是我本机上的一个数据库
    如果你连接的是本机的数据库你也可以这么写
    private static String dbUrl="jdbc:mysql:///myDatabase";

    private static String dbUser="root";
    private static String dbPwd="root";
    这两个很好理解就是你连接mysql数据库的账号和密码
     conn = DriverManager.getConnection(dbUrl, dbUser, dbPwd);

    调用DriverManager对的getConnection方法返回一个Connection对象
    这样你就获得了一个连接对象
    4.使用connection对象获得statement对象
    state = conn.createStatement(1004, 1007);
    调用 createStatement方法就会返回一个statement对象,这里的参数可以不填
    state = conn.createStatement();
    这样statement 返回的结果集的游标就不能向后移动了

     参数resultSetType指定ResultSet的类型。其选项有:

    1. TYPE_FORWARD_ONLY:缺省类型。只允许向前滚动,并且不会受到其他用户对数据库所做更改的影响。1003
    2. TYPE_SCROLL_INSENSITIVE:允许向前或向后两个方向的滚动,不会受到其他用户对数据库所做更改的影响。1004
    3. TYPE_SCROLL_SENSITIVE: 允许向前或向后两个方向的滚动,受到其他用户对数据库所做更改的影响。即在该参数下,会及时跟踪数据库的更新,以便更改ResultSet中的数据。1005

    参数resultSetConcurrency设置ResultSet的并发性,该参数设定是否可以更新ResultSet。

      • CONCUR_READ_ONLY:缺省值,指定不可以更新ResultSet1。1007
      • CONCUR_UPDATABLE:指定可以更新ResultSet。1008

    
    
    5.使用statement对象执行sql语句
    int executeUpdate(String sql)这个方法会返回受影响个数,这个方法来执行增删改语句,只要程序没有抛出异常返回的int值都是大于0的
    resultSet executeQuery(String sql)这个方法会返回ResultSet对象,这个方法来执行查询语句并返回查询的结果集
    
    
    6.处理结果
    如果执行的是增删改语句,打印一下 返回的int值就可以了
    如果执行的是查询语句,返回的是一个resultset对象
    你需要用getString,getInt等方法来获取结果集中的数据
     while (rs.next()) {
                    System.out.println(rs.getString("name") + "," + rs.getInt("id") + "," + rs.getInt("age"));
                }

    这里的name,id,age 是数据库中表的列名   rs.next 会将游标向前移动,这样就能获得全部结果集的所有数据

    7.释放资源
     if(state!=null) {
                try {
                    state.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if(conn!=null) {
                try {
                    conn.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
    if(rs!=null){
                    try {
                        rs.close();
                    } catch (SQLException e) {
                        e.printStackTrace();
                    }
                }

    推一首歌吧   也行会成为我的习惯吧

    http://music.163.com/song?id=27969909&userid=342547956

     
     
    
    
    
    
     
     


     
  • 相关阅读:
    常用PHP函数整理
    Linux常用命令整理
    Linux怎样创建FTP服务器
    设置ssh只允许用户从指定的IP登陆
    解决数据库不能远程连接方法
    [记录]ns_error_unexpected firefox tinymce
    $.parseJSON 将json 对象转换为array
    Flash cs6 帧上的菱形原来是关键帧
    [记录]java.math.biginteger cannot be cast to java.lang.long
    Flash cs6 如何从FLA 文件导出sound文件
  • 原文地址:https://www.cnblogs.com/kyousuke/p/11334858.html
Copyright © 2011-2022 走看看