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(); } }
循环取得结果集:
100 Wing XT
123 xiaoxiao beijing
120 xiaoxiao beijing
10001 hello0 addbatch
10001 hello0 addbatch
10001 hello0 addbatch
100 hello transaction
101 hello transaction
123 xiaoxiao beijing
120 xiaoxiao beijing
10001 hello0 addbatch
10001 hello0 addbatch
10001 hello0 addbatch
100 hello transaction
101 hello transaction
103 hello transaction
往数据库中添加数据:
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(); } } } }
本站文章为和通数据库网友分享或者投稿,欢迎任何形式的转载,但请务必注明出处.
同时文章内容如有侵犯了您的权益,请联系QQ:970679559,我们会在尽快处理。