转载

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();  } } 

循环取得结果集:

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

往数据库中添加数据:

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中的所学,望各位斧正!

正文到此结束
Loading...