博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
2019-4-22 jdbc学习笔记
阅读量:7107 次
发布时间:2019-06-28

本文共 4902 字,大约阅读时间需要 16 分钟。

jdbc

一.定义:java database connector

二.常用的接口

       java.sql.Driver  驱动

       java.sql.Connection  链接

  java.sql.Statement    静态处理块

  java.sql.PreparedStatement   预处理模块

  java.sql.ResultSet  结果集

  java.sql.ResultSetMeteData  数据库信息数据集

 

三.使用方法:

  注意:oracle和mysql的jdbc 的jar包是不一样的

  1.导入jar包

  2.编译jar包

 

url=jdbc:oracle:thin:@localhost:1521:ORCLusername=SCOTTpassword=root

 

 
public class DBUtils {
private static String url = ""; private static String username = ""; private static String password = ""; static{ try { //加载驱动 Class.forName("oracle.jdbc.driver.OracleDriver"); //通过当前的线程获取类加载器,再获取资源获取器(不然不能读取到相对路径) InputStream stream = Thread.currentThread() .getContextClassLoader() .getResourceAsStream("dao/db.properties"); //通过properties读取流中的配置信息 Properties properties = new Properties(); properties.load(stream); url = properties.getProperty("url"); username = properties.getProperty("username"); password = properties.getProperty("password"); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } /** * 获取链接的方法 * @return */ public static Connection getConnection(){ Connection connect = null; //创建驱动对象 Driver driver = new OracleDriver(); try { //将驱动对象加入到驱动对象管理器中 DriverManager.deregisterDriver(driver); //通过驱动对象管理器获取链接 connect = DriverManager .getConnection(url,username,password); } catch (SQLException e) { e.printStackTrace(); } return connect; } /** * 获取sql语句传达器 * @return */ public Statement getStatement(){ Statement st = null; try { st = new DBUtils().getConnection().createStatement(); } catch (SQLException e) { e.printStackTrace(); } return st; } /** * 获取编译好的PrepareStatement * @param psql 带问号的sql语句 * @param args 与问好相对应的参数 * @return */ public PreparedStatement getPrepareStatement(String psql,Object... args){ PreparedStatement pst = null; //获取链接 Connection conn = new DBUtils().getConnection(); try { //产生预编译执行器 pst = conn.prepareStatement(psql); for (int i = 0; i < args.length; i++) { //给预编译注入参数 pst.setObject(i+1,args[i]); } ResultSet resultSet = pst.executeQuery(); } catch (SQLException e) { e.printStackTrace(); } return pst; } /** * 释放Connection PrepareStation ResultSet的资源 * @param conn */ public void release(AutoCloseable... conn){ for (int i = 0; i < conn.length; i++) { try { if(conn[i]!=null){ conn[i].close(); } } catch (Exception e) { e.printStackTrace(); } } } @Test /*** * 测试链接是否成功的方法 */ public void test(){ System.out.println(new DBUtils().getConnection()); } }
 

 

/**     * 获取表信息数据集     * @return     */    public DatabaseMetaData getDatabaseMetaData(){        try {            return DBUtils.getConnection().getMetaData();        } catch (SQLException e) {            e.printStackTrace();        }        return null;    }    public void getAllTableNames(){        //获取链接        Connection connection =                DBUtils.getConnection();        try {            //获取表数据集            DatabaseMetaData metaData = this.getDatabaseMetaData();            ResultSet tables = metaData.getTables(null, null, null, new String[]{"TABLE"});            while(tables.next()){                //获取表名                String tableName = tables.getString("TABLE_NAME");                System.out.println(tableName);            }        } catch (SQLException e) {            e.printStackTrace();        }    }    //输出列名、类型、注释    public void printColumnInfo(DatabaseMetaData databaseMetaData)throws Exception{        ResultSet rs = databaseMetaData.getColumns(null, "%", "EMP", "%");        while(rs.next()){            //列名            String columnName = rs.getString("COLUMN_NAME");            //类型            String typeName = rs.getString("TYPE_NAME");            //注释            String remarks = rs.getString("REMARKS");            System.out.println(columnName + "--" + typeName + "--" + remarks);        }    }

 

//测试基础查询语句    public void testStatement(){        Connection conn =                new DBUtils().getConnection();        try(Statement statement = conn.createStatement()){            ResultSet resultSet = statement.executeQuery("SELECT * FROM EMP");            while(resultSet.next()){                System.out.print(resultSet.getString("ENAME")+" ");                System.out.println(resultSet.getInt("SAL"));            }        } catch (SQLException e) {            e.printStackTrace();        }    }    /**     * 当要大量插入数据的时候使用batch更快     */    public void testBatch(){        Connection conn = DBUtils.getConnection();        try {            PreparedStatement ps = conn.prepareStatement("INSERT INTO EMPTEMP(NAME,AGE) VALUES(?,?)");            for (int i = 1; i < 1000; i++) {                ps.setString(1,"小王"+i);                ps.setInt(2,i);                //将当前的指令存储到batch中                ps.addBatch();            }            ps.executeBatch();            ps.close();            conn.close();        } catch (SQLException e) {            e.printStackTrace();        }    }

 

转载于:https://www.cnblogs.com/w410782823/p/10749678.html

你可能感兴趣的文章
我的 Vue.js 学习日记 (一)
查看>>
JSONP跨域
查看>>
如何用 CSS + HTML + JS 创建桌面应用
查看>>
前端如何让网页打印时每一页都有固定的头部,且在达到固定高度时自动分页...
查看>>
WPF:Animation动画--KeyFramesExample帧动画(2)
查看>>
FFMPEG vaapi_encoder 源码阅读
查看>>
h5实现移动端图片预览器(一)
查看>>
支付-收款
查看>>
vue项目打包后想发布在apache www/vue 目录下
查看>>
MixPHP 独特的SQL构建方式
查看>>
PHP简洁之道
查看>>
丁香园开源接口管理系统
查看>>
Burpsuite学习(3)
查看>>
一个Visual Studio Code编辑场景
查看>>
WordPress版微信小程序开发系列(一):WordPress REST API
查看>>
用gomock进行mock测试
查看>>
我的面试准备过程--ubuntu使用过程记录
查看>>
[LeetCode] Remove Element
查看>>
快速了解小程序
查看>>
MongoDB干货篇之数据更新
查看>>