>>分享Java编程技术,对《Java面向对象编程》等书籍提供技术支持 书籍支持  卫琴直播  品书摘要  在线测试  资源下载  联系我们
发表一个新主题 开启一个新投票 回复文章 您是本文章第 28978 个阅读者 刷新本主题
 * 贴子主题:  JDBC API中批处理SQL语句以及获得元数据信息 回复文章 点赞(0)  收藏  
作者:flybird    发表时间:2019-10-30 13:48:43     消息  查看  搜索  好友  邮件  复制  引用

1、批处理的使用:同时执行多个sql语句。可以用事务进行管理。用法参考代码:
[/code]import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
public class BatchDemo {
public static void main(String[] args) {
final String driver="com.mysql.jdbc.Driver";
try {
Class.forName(driver);
Connection conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/sh","sh","123456");
Statement stmt=conn.createStatement();
//关闭自动提交 默认自动提交事务,后续代码使用手动添加事务进行处理
conn.setAutoCommit(false);
//把以下三个insert语句作为一个批处理
stmt.addBatch("insert into employee values(161,'李',27,15000,'欧洲',101,105)");
stmt.addBatch("insert into employee values(162,'李',27,15000,'欧洲',101,105)");
stmt.addBatch("insert into employee values(163,'李',27,15000,'欧洲',101,105)");
//执行批处理,接收每条语句的执行结果 result数组中会存在一组0和1
int[] result=stmt.executeBatch();
for(int i:result){
System.out.println(i);
}
//提交事务
conn.commit();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}
}[/code]2、元数据 MetaData:描述数据库中的一些数据。
1)DataBase MetaData:数据库的元数据。用法参考代码:
[/code]import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
public class MetadataDemo {
public static void main(String[] args) {
final String driver="com.mysql.jdbc.Driver";
try {
Class.forName(driver);
Connection conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/sh","sh","123456");
//数据的元数据:存放数据库的信息或者DBMS的信息
DatabaseMetaData dameta=conn.getMetaData();
System.out.println("驱动的名字"+dameta.getDriverName());
System.out.println("驱动的主版本"+dameta.getDatabaseMajorVersion());
System.out.println("驱动的小版本"+dameta.getDatabaseMinorVersion());
ResultSet rs=dameta.getTables(null, null, "employee", new String[] {"TABLE"});
//rs 结果集里每一列代表返回表中不同的信息
while(rs.next()){
System.out.println(rs.getString(1));
System.out.println(rs.getString(2));
System.out.println(rs.getString(3));//返回表名
System.out.println(rs.getString(4));
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}
}[/code]其中getTables返回的列包含以下数据:
TABLE_CAT String => table catalog (may be null)
TABLE_SCHEM String => table schema (may be null)
TABLE_NAME String => table name
TABLE_TYPE String => table type. Typical types are "TABLE", "VIEW", "SYSTEM TABLE", "GLOBAL TEMPORARY", "LOCAL TEMPORARY", "ALIAS", "SYNONYM".
REMARKS String => explanatory comment on the table
TYPE_CAT String => the types catalog (may be null)
TYPE_SCHEM String => the types schema (may be null)
TYPE_NAME String => type name (may be null)
SELF_REFERENCING_COL_NAME String => name of the designated "identifier" column of a typed table (may be null)
REF_GENERATION String => specifies how values in SELF_REFERENCING_COL_NAME are created. Values are "SYSTEM", "USER", "DERIVED". (may be null)

2)ResultSet MetaData:结果集的元数据。用法参考代码:
[/code]import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
public class MetadataDemo {
    public static void main(String[] args) {
        final String driver="com.mysql.jdbc.Driver";
        try {
            Class.forName(driver);
            Connection conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/sh","sh","123456");
            //结果集的元数据
            Statement stmt=conn.createStatement();
            ResultSet rs1=stmt.executeQuery("select * from employee");
            //获取结果集的元数据
            ResultSetMetaData rsMeta=rs1.getMetaData();
            System.out.println(rsMeta.getColumnCount());//返回结果集列数
            System.out.println(rsMeta.getColumnName(3));//返回结果集第三列的列名
            System.out.println(rsMeta.getTableName(2));//返回结果集第2列的表名
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}
[/code]————————————————
原文链接:https://blog.csdn.net/heart_1014/article/details/52202943


程序猿的技术大观园:www.javathinker.net
  Java面向对象编程-->继承
  JavaWeb开发-->Web运作原理(Ⅱ)
  JSP与Hibernate开发-->通过JPA API检索数据
  Java网络编程-->通过JavaMail API收发邮件
  精通Spring-->Vue指令
  Vue3开发-->Vue简介
  Doubles swept by Braves, set out 14 times in 3-0 loss
  《漫画Java编程》勘误及建议
  搞定这24道JVM面试题,要价30k都有底气
  18 张图弄懂面试官必问的一致性哈希
  购书咨询
  Redis安装、Redis基本数据类型、Jedis、Redis集群搭建
  Java是如何实现自己的SPI机制的?
  内部类的种类和用法
  小数在内存中是如何存储的?
  Java设计模式:观察者模式
  Java入门实用代码:List 循环移动元素
  Java入门实用代码:数组转集合
  Java入门实用代码:字符串小写转大写
  中国有多少程序员?现在还值得学java吗?
  Java Pattern和Matcher字符匹配详解
  更多...
 IPIP: 已设置保密
楼主      
1页 0条记录 当前第1
发表一个新主题 开启一个新投票 回复文章


中文版权所有: JavaThinker技术网站 Copyright 2016-2026 沪ICP备16029593号-2
荟萃Java程序员智慧的结晶,分享交流Java前沿技术。  联系我们
如有技术文章涉及侵权,请与本站管理员联系。