你的位置:首页 > 数据库

[数据库]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 * * oracle\product\12.1.0\dbhome_1\jdbc\lib 把这个目录下面的 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中的所学,望各位斧正!