jdbc 新认识

以前一直用jdbc,没有深入看看,原来jdbc是java自己的接口规范,db厂商按照接口进行开发对应的驱动,jdbc可以获取db中的元信息,执行sql,获取结果,操作db等等。示例如下。

public static void main(String[] args) {
        try {
            Class.forName("oracle.jdbc.OracleDriver");
            Connection con = DriverManager.getConnection("jdbc:Oracle:thin:DEVH3IMAGE/[email protected]//localhost:1521/orcl");

            //获取数据库元信息
            DatabaseMetaData data = con.getMetaData();
            System.out.println("数据库db名称:"+data.getDatabaseProductName());
            System.out.println("数据库db版本"+data.getDatabaseProductVersion());
            System.out.println("链接驱动名称:"+data.getDriverName());
            System.out.println("db链接url信息:"+data.getURL());

            //获取db所有表名称
            ResultSet tableset =  data.getTables("orcl", "DEVH3IMAGE", null, new String[]{"TABLE"});
            System.out.println("db中所有表名");
            while (tableset.next()) {
                System.out.print(tableset.getString("TABLE_NAME") + "\t");
            }
            System.out.println();
            ResultSet colset =  data.getColumns("orcl", "DEVH3IMAGE", "T_YX_01",null);
            System.out.println("表T_YX_01中的所有列名");
            while (colset.next()) {
                System.out.print(colset.getString("COLUMN_NAME") + "\t");
            }
            System.out.println();
            //同样的 可以获取到db中所有的索引 存储过程 等等信息

            System.out.println("=====================================");

            //设置只读
//            con.setReadOnly(true);
            System.out.println("con is read only ? == "+con.isReadOnly());
            //默认是自动提交事务
            System.out.println("con is auto commit?==="+con.getAutoCommit());
            System.out.println("=====================================");

            //普通查询
            Statement st = con.createStatement();
            ResultSet set = st.executeQuery("select * from t_yx_01");
            st.close();

            //带参数查询
            PreparedStatement pst = con.prepareStatement("select * from t_yx_01 where id = ?");
            pst.setString(1, "1930128");
            ResultSet prSet = pst.executeQuery();
            ResultSetMetaData rdata =  prSet.getMetaData();
            while (prSet.next()) {
                for (int i = 1; i <= rdata.getColumnCount(); i++) {
                    System.out.print(rdata.getColumnName(i) +":"+ prSet.getString(rdata.getColumnName(i)));
                    System.out.print("\t");
                }
                System.out.println();
            }
            pst.close();

            System.out.println("=====================================");
            con.close();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            //sqlexception中有sql自己的异常信息
            System.out.println(e.getErrorCode());
            System.out.println(e.getMessage());
            System.out.println(e.getSQLState());
            e.printStackTrace();
        }
        
时间: 2024-10-08 10:32:38

jdbc 新认识的相关文章

美国政府关于Google公司2013年度的财务报表红头文件

请管理员移至新闻版块,谢谢! 来源:http://www.sec.gov/ 财务报表下载↓ 此文仅作参考分析. 10-K 1 goog2013123110-k.htm FORM 10-K UNITED STATES SECURITIES AND EXCHANGE COMMISSION Washington, D.C. 20549     FORM 10-K (Mark One)       ý ANNUAL REPORT PURSUANT TO SECTION 13 OR 15(d) OF TH

使用 Tomcat 7 新的连接池 —— Tomcat jdbc pool

Tomcat 在 7.0 以前的版本都是使用 commons-dbcp 做为连接池的实现,但是 dbcp 饱受诟病,原因有: dbcp 是单线程的,为了保证线程安全会锁整个连接池 dbcp 性能不佳 dbcp 太复杂,超过 60 个类 dbcp 使用静态接口,在 JDK 1.6 编译有问题 dbcp 发展滞后 因此很多人会选择一些第三方的连接池组件,例如 c3p0 , bonecp, druid (@wenshao ) 等. 为此,Tomcat 从 7.0 开始引入一个新的模块:Tomcat j

Tomcat7 新的数据库连接池Tomcat jdbc pool介绍和配置

Tomcat 在 7.0 以前的版本都是使用commons-dbcp做为连接池的实现,但是 dbcp存在一些问题: (1)dbcp 是单线程的,为了保证线程安全会锁整个连接池 (2)dbcp 性能不佳 (3)dbcp 太复杂,超过 60 个类,发展滞后. 因此,通常J2EE中还会使用其它的高性能连接池,如 C3P0,还有阿里系的 druid 等.为此,Tomcat 从 7.0 开始引入一个新的模块: Tomcat jdbc pool tomcat jdbc pool 近乎兼容 dbcp ,性能更

爪哇国新游记之十四----初试JDBC

import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; public class A{ public static void search1(){ Connection conn=null; PreparedStatement ps=null; Resu

新jdbc的应用

今天,我学习新的技术叫jdbc,起初出现了一些错误,虽然有点挫折,但是最后还是完成了学习. 下面就是我的学习结果; <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%><%String path = request.getContextPath();String basePath = request.getScheme()+"://&q

Java SE 6 新特性: Java DB 和 JDBC 4.0

http://www.ibm.com/developerworks/cn/java/j-lo-jse65/index.html 长久以来,由于大量(甚至几乎所有)的 Java 应用都依赖于数据库,如何使用 Java 语言高效.可靠.简洁地访问数据库一直是程序员们津津乐道的话题.新发布的 Java SE 6 也在这方面更上层楼,为编程人员提供了许多好用的新特性.其中最显著的,莫过于 Java SE 6 拥有了一个内嵌的 100% 用 Java 语言编写的数据库系统.并且,Java 6 开始支持 J

JDBC读取新插入Oracle数据库Sequence值的5种方法

Oracle的sequence实现非常灵活,所以也带来一些易用性问题,如何取到新插入记录生成的sequence值与其它数据库有较大差别,本文详国介绍了5种实现读取新插入记录sequence值的方法. 测试用的数据库脚本: SQL> create table T1 2 ( 3 ID NUMBER 4 ); Table created SQL> create sequence SEQ_T1; Sequence created //公共代码:得到数据库连接 public Connection get

高版本MySQL(5.7,5.8)的JDBC连接新问题

在使用JDBC连接访问MySQL时一般要使用对应版本的驱动. 比如我使用了8.0.11版本的MySQL,对应驱动的Maven描述为: 1 <dependency> 2 <groupId>mysql</groupId> 3 <artifactId>mysql-connector-java</artifactId> 4 <version>8.0.11</version> 5 </dependency> 然后遇到了驱

重装系统,新安装IDEA启动项目后,classnotfound:com.mysql.jdbc.Driver

我最后解决是:这个Test connection会自动帮你下载的,但是如果中途一直叫你try again,甚至到后面点这个test connection有弹窗,但是单窗里面的选项你点击后没反应,我是直接卸载IDEA重装了,(浪费一个下午弄这个问题),然后再来一次,就成功了. 我再说一下症状:我新装的IDEA,(重装系统),打开我以前的maven项目试着启动,报错找不到com.mysql.jdbc.Driver,检查依赖和本地的仓库,没发现mysql-connector-java有问题,打开IDE