• JDBC(用Eclipse操作数据库Oracle)的基础操作集合


      JDBC:

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

          使用Eclipse来操作数据库有六个步骤:

          1 加载驱动

          2 获取链接对象

          3 创建语句对象

          4 循环取得结果集

            5 再循环中数据类型转换

          6 关闭资源

          接下来做一些简单的JDBC代码实例

        注:下面的代码我用是throws Exception来抛出异常,会使结构不太严谨,因为是初学,所有没有贴出严谨结构的代码,会在最后补充。

    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    
    
    public class JDBC {
    
        public static void main(String[] args) throws ClassNotFoundException, SQLException, InstantiationException, IllegalAccessException {
            //产生JDBC Driver对象,三种方法
            Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
            new oracle.jdbc.driver.OracleDriver();
            Class.forName("oracle.jdbc.driver.OracleDriver");//这个Driver的实例化在构建过程中会自动向DriverManager自动注册
            //连接数据库
            Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:orcl","c##scott","root");//拿到数据库的链接
            
            //创建语句对象statement,作用:调用方法向数据库传递SQL语句,并接受数据库返回的结果集
            java.sql.Statement sts = conn.createStatement();
            ResultSet rs = sts.executeQuery("select * from a_tab"); //在第一条记录的前一位,
            rs.next();
            
            //循环取得结果集
            
            
            while (rs.next()) {
                //转化数据类型
                System.out.print(rs.getInt("id") + " ");
                System.out.print(rs.getString("name") + " ");
                System.out.println(rs.getString("ad") + " ");
            }
            
            //关闭资源
            rs.close();
            sts.close();
            conn.close();
        }
    
    }

    循环取得结果集:

    往数据库中添加数据:

    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.Statement;
    
    public class JDBC_03{
        public static void main(String[] args) throws Exception{
            //1 加载驱动  就是实例化链接对象
            Class.forName("oracle.jdbc.driver.OracleDriver");
            //2 获取数据库的链接
            Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:orcl", "c##scott", "root");
            //3 创建语句对象  传输语句并执行  还要接收返回的结果集
            Statement ss = conn.createStatement();
            String sql ="insert into a_tab values(123,'xiaoming','beijing')"; 
            System.out.println(sql);
            ss.execute(sql);
            //6 关闭资源
            ss.close();
            conn.close();
        }
    }

    换一种方法:

    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.SQLException;
    import java.sql.Statement;
    
    import oracle.jdbc.OracleDriver;
    
    
    public class JDBC_04 {
    
        public static void main(String[] args) throws SQLException{
            
            if (args.length != 3) {
                System.out.println("请输入三个值");
                System.exit(1);
                
            }
            int id = Integer.parseInt(args[0]);
            String name = args[1];
            String ad = args[2];
            
            //加载驱动
            new OracleDriver();
            //获取链接,
            Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:orcl", "c##scott", "root");
            //创建语句
            Statement st = conn.createStatement();
            String sql = "insert into a_tab values('"+ id + "','"+ name +"','"+ ad +"')";
            System.out.println(sql);
            st.executeUpdate(sql);
            //关闭资源
            st.close();
            conn.close();
        }
    
    }

    使用batch来添加:

    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.Statement;
    
    import oracle.jdbc.driver.OracleDriver;
    
    
    public class JDBC_06 {
    
        public static void main(String[] args) throws Exception{
            //加载驱动
            new OracleDriver();
            //连接数据库
            Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:orcl", "c##scott", "root");
            //创建语句
            Statement stmt = conn.createStatement();
            stmt.addBatch("insert into a_tab values(10001,'hello0','addbatch')");
            stmt.addBatch("insert into a_tab values(10001,'hello0','addbatch')");
            stmt.addBatch("insert into a_tab values(10001,'hello0','addbatch')");
            /*PreparedStatement st = conn.prepareStatement("insert into a_tab values(?,?,?)") ;
            st.setInt(1, 123);
            st.setString(2, "xiaoxiao");
            st.setString(3, "beijing");
            st.addBatch();
            
            st.setInt(1, 120);
            st.setString(2, "xiaoxiao");
            st.setString(3, "beijing");
            st.addBatch();
            st.executeBatch();
            */
            stmt.executeBatch();
            
            //关闭
            stmt.close();
            conn.close();
            
        }
    
    }

    使用事务:

    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.Statement;
    
    import oracle.jdbc.OracleDriver;
    
    
    public class JDBC_08 {
    
        public static void main(String[] args) throws Exception{
            //加载驱动
            new OracleDriver();
            //链接对象
            Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:orcl","c##scott","root");
            //传输对象
            Statement st = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);//并发只读模式
            //如果没有第一个参数  只能用resultset里面的next();
            //有了这个参数 就能用所有方法
            ResultSet rs = st.executeQuery("select * from a_tab");
            rs.next();//从头顶进入第一行
            System.out.println(rs.getInt(1));//第一行第一列
            System.out.println(rs.getString(2));
            System.out.println(rs.getString(3));
            System.out.println(rs.getString(1));
            System.out.println("----------------");
            rs.last();
            System.out.println(rs.getInt("id"));
            System.out.println(rs.isLast() + "-----");
            
            rs.absolute(2);
            System.out.println(rs.getInt(1) + "absolute 2");
            
            rs.previous();
            System.out.println(rs.getInt(1) + "previous");
        }
        
    
    }

    最后来个集合,对数据的基本操作:

    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.Statement;
    
    import oracle.jdbc.driver.OracleDriver;
    import oracle.net.aso.s;
    
    
    public class JDBC_09 {
    
        public static void main(String[] args) throws Exception{
            //加载驱动
            new OracleDriver();
            //链接对象
            Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:orcl","c##scott","root");
            //传输对象
            Statement sts = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);//并发可更新
            //结果集对象
            ResultSet rs = sts.executeQuery("select ID,NAME,AD from a_tab");
            //结果处理
            rs.next();
            //
            rs.updateInt(1, 9900);//第一个字段,9999
            rs.updateString("NAME", "aobama");
            rs.updateString("AD", "baigong");
            //rs.insertRow();//把这行插入结果集和数据库
            
            
            rs.moveToCurrentRow();//把光标移动到新建的行
            
            //
            rs.absolute(2);//移动到指定行
            rs.deleteRow();//删除改行
            
            //
            rs.updateString("NAME", "newyue");//更改内存中的数据集中的数据
            rs.updateRow();//把更改的数据更新到数据库中
            //关闭
            rs.close();
            sts.close();
            conn.close();
            
        }
    
    }

    严谨代码(以后工作中要使用严谨的代码结构,否则会被老板骂死的):

    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    
    import org.omg.CORBA.COMM_FAILURE;
    
    /**
     * try catch
     * ClassNotFoundException    SQLException 
     * 
     * oracleproduct12.1.0dbhome_1jdbclib 把这个目录下面的 ojdbc7.jar 拿到 当前项目中 --
     * 简单使用jdbc 6步 : 
     * 1 加载驱动
     * 2 获取链接/或者说链接数据库 
     * 3 创建语句对象 statement 作用: 
     * 4 循环取得结果集 
     * 5在循环结果集中数据类型进行转换 
     * 6 关闭资源
     */
    public class JDBC_00_Decktop {
    
        public static void main(String[] args) {
            Connection conn = null;
            Statement stmt = null;
            ResultSet rs = null;
            try {
                //<一> 产生JDBC driver对象 就是说 加载驱动 有三种方法
                //1.1 forName句柄 加载文件 获取实例
                Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
                //1.2 跟上面一样
                //这个Driver实例在构建过程中会向DriverManager里面自动注册,不用自己管
                Class.forName("oracle.jdbc.driver.OracleDriver");
                //1.3 直接实例化
                new oracle.jdbc.driver.OracleDriver();
                
                //<二> 连接数据库 --- 就是通过DriverManager的获取链接方法 传过去三个函数,数据库路径 用户名  密码
                conn = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:orcl", "system", "root");
                
                //<三> 创建语句对象 Statement 作用:调用方法向数据库传递SQL语句,并接收返回的结果集。
                stmt = conn.createStatement();
                //----结果集怎么获取
                rs = stmt.executeQuery("select * from c##scott.emp");//字符串内不用加分号
                //rs 在第一条记录的上方
                //rs.next();//返回的是boolean型
                System.out.println("EMPNO     ENAME     JOB     MGR     HIREDATE                  SAL     COMM     DEPTNO");
                
                //<四> 循环获取结果集
                while (rs.next()) {
                    //<五> 在循环中把数据类型进行转换得到自己想要的数据类型(java对应的数据类型)  其实我们可以随意转换,只要不失去精度就可以
                    System.out.print(rs.getString("empno")+"    ");
                    System.out.print(rs.getString("ename")+"    ");
                    System.out.print(rs.getString("job")+"    ");
                    System.out.print(rs.getInt("mgr")+"    ");
                    System.out.print(rs.getString("hiredate")+"    ");
                    System.out.print(rs.getInt("sal")+"    ");
                    System.out.print(rs.getInt("comm")+"    ");
                    System.out.println(rs.getInt("deptno")+"    ");
                    
                    
                }
            } catch (Exception e) {
                e.printStackTrace();
            }finally{
                try{
                    if (rs != null) {
                        rs.close();
                    }
                    if (stmt != null) {
                        stmt.close();
                    }
                    if (conn != null) {
                        conn.close();
                    }
                    }catch (SQLException e2) {
                        e2.printStackTrace();
                    }
                }
            }
        }

    以上就是我在JDBC中的所学,望各位斧正!

  • 相关阅读:
    Cocos Creator脚本开发事例
    java调用sap的webservice(需要登录验证)
    Lua require 相对路径
    C++学习笔记
    Lua MD5加密字符串
    USE " cc.exports.* = value " INSTEAD OF SET GLOBAL VARIABLE"
    cocos2d-x学习笔记
    麻将胡牌算法研究
    Tomcat服务器配置https双向认证(使用keytool生成证书)
    MySQL密码忘了怎么办?MySQL重置root密码方法
  • 原文地址:https://www.cnblogs.com/wing411/p/4831405.html
Copyright © 2020-2023  润新知