事情过去好久了...大概三年前

记着那个时候,此大牛(IBM某架构),在UE下一气呵成,没有任何多余代码,甚至不用注释都可以看得明白此段代码用途,现在仔细看了,虽然很基本,但是仍旧觉着此段代码很爽!贴出来,让大家有时间的话,都大致看一下...

package com.yinhai.util;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.Statement;
public class JdbcUtil
{
static{
String driver = "oracle.jdbc.driver.OracleDriver";
try{
Class.forName(driver);
}catch(Exception e){
e.printStackTrace();
}
}
public static Connection getConnection(){
String url =
"jdbc:oracle:thin:@192.192.192.239:1521:orcl";
String usr = "xajgyl";
String pwd = "xajgyl";
Connection con = null;
try{
con = DriverManager.getConnection(url,usr,pwd);
}catch(Exception e){
e.printStackTrace();
}
return con;
}
public static void close(ResultSet rs, Statement stmt,Connection con){
try{
if(rs!=null) rs.close();
}catch(Exception ex){
ex.printStackTrace();
}
try{
if(stmt!=null) stmt.close();
}catch(Exception ex){
ex.printStackTrace();
}
try{
if(con!=null) con.close();
}catch(Exception ex){
ex.printStackTrace();
}
}
public static void printRs(ResultSet rs){
try{
StringBuffer sb = new StringBuffer();
ResultSetMetaData meta = rs.getMetaData();
int cols = meta.getColumnCount();
while(rs.next()){
for(int i=1;i<=cols;i++){
sb.append(meta.getColumnName(i)+"->");
sb.append(rs.getString(i)+"  ");
}
sb.append("\n");
}
System.out.print(sb.toString());
}catch(Exception e){
e.printStackTrace();
}
}
}

另外一个类:

package com.yinhai.util;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
public class SQLTools
{
public static void main(String[] args){
Connection con = null;
while((con=getConnection())==null){};
try{
con.setAutoCommit(false);
}catch(Exception e){
System.out.println(e.getMessage());
}
handleCommand(con);
JdbcUtil.close(null,null,con);
System.out.println("再见!");
}
private static void handleCommand(Connection con){
String command = "";
boolean flag = true;
while(flag){
command = getCommand();
if("quit".equals(command)){
flag = false;
}else if("commit".equals(command) || "rollback".equals(command)){
handleCommit(con,command);
}else{
handleSQL(con,command);
}
}
}
private static Connection getConnection(){
Connection con = null;
String url = "";
String usr = "";
String pwd = "";
url = prompt("请输入URL:");
usr = prompt("请输入用户名:");
pwd = prompt("请输入密码:");
try{
con = DriverManager.getConnection(url,usr,pwd);
}catch(Exception e){
System.out.println("连接错误:"+e.getMessage());
}
return con;
}
private static String getCommand(){
StringBuffer sb = new StringBuffer();
String command = "";
String message = "SQL->";
boolean flag = true;
int c = 0;
while(flag){
if(c++!=0) message = c+"->";
sb.append(prompt(message)+" ");
command = sb.toString().trim();
if(command.endsWith(";")){
flag = false;
}
}
return command.substring(0,command.length()-1).trim();
}
private static void handleCommit(Connection con,String command){
try{
if("commit".equals(command)){
con.commit();
}else{
con.rollback();
}
}catch(Exception e){
System.out.println("提交/回滚失败:"+e.getMessage());
}
}
private static void handleSQL(Connection con ,String command){
PreparedStatement ps = null;
ResultSet rs = null;
try{
ps = con.prepareStatement(command);
if(ps.execute()){
rs = ps.getResultSet();
JdbcUtil.printRs(rs);
}else{
System.out.println("更新成功:"+ps.getUpdateCount()+" .");
}
}catch(Exception e){
System.out.println("数据操作失败:"+e.getMessage());
try{
if(con!=null)con.rollback();
}catch(Exception ex){
ex.printStackTrace();
}
}
}
private static String prompt(String message){
BufferedReader in = new BufferedReader( new InputStreamReader(System.in));
System.out.print(message);
String input = "";
try{
input = in.readLine();
}catch(Exception e){
System.out.println("IO错误:"+e.getMessage());
}
return input;
}
}

一个大牛写的JDBC工具类相关推荐

  1. 微服务应用大行其道,我提供一个dto和entity转换工具类,方便大家做转换,少写机械代码,多陪陪家人

    微服务应用大行其道,我提供一个dto和entity转换工具类,方便大家做转换,少写机械代码,多陪陪家人. 该工具类主要是对dozer进行了封装,使用过程代码量极少,废话少说,贴代码了 import j ...

  2. 微服务应用大行其道,我提供一个dto和entity转换工具类,方便大家做转换,少写机械代码,多陪陪家人...

    微服务应用大行其道,我提供一个dto和entity转换工具类,方便大家做转换,少写机械代码,多陪陪家人. 该工具类主要是对dozer进行了封装,使用过程代码量极少,废话少说,贴代码了 import j ...

  3. java jdbc工具类抽取_JavaWeb入门(三):JDBC工具类的抽取

    一.通过上篇文章,我们已经可以使用JDBC对数据库中的表进行增删改查啦(JDBC的基本使用:https://www.cnblogs.com/Infancy/p/12499806.html),我们对上篇 ...

  4. MySQL数据库学习笔记(十一)----DAO设计模式实现数据库的增删改查(进一步封装JDBC工具类)...

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

  5. Druid+Sqlite-JDBC+Kotlin,封装的一个都是毛病的工具类,奆佬们,评论区教一下我怎么封装

    Druid+JDBC工具类 我只是一个新手,也不怎么会kotlin但是我看教程都很少,讲SQLite-JDBC结合Druid或者说怎么写Durid的配置文件, 我先放工具类 import com.al ...

  6. JDBC:JDBC工具类JDBCUtils

    JDBC工具类:JDBCUtils 1.在src目录下创建一个文件:jdbc.properties url=jdbc:mysql://localhost/stu_db ---数据库的url地址 use ...

  7. MySQL笔记 —— jdbc工具类(网站的修改密码,注册账号,注销账号功能)

    在之前的这篇博客里面MySQL笔记 -- jdbc连接数据库(增删改查,sql注入,网站登录检查) 写了网站登录检查的代码,通过将用户输入的用户名和密码与数据库中存储的用户名和密码进行比较,如果一致则 ...

  8. 抽取JDBC工具类的方法

    抽取JDBC工具类的方法 抽取JDBC工具类 目的:简化书写 抽取JDBC工具类 目的:简化书写 分析: 1.注册驱动抽取 2.抽取一个方法获取连接对象 需求:不想传递参数(麻烦),还得保证工具类的通 ...

  9. JDBC 快速入门JDBC 抽取JDBC工具类:JDBCUtils

    文章目录 JDBC 快速入门JDBC 抽取JDBC工具类:JDBCUtils JDBC 概念:java database Connectivity java 数据库连接,java语言操作数据库 JDB ...

最新文章

  1. Centos6.5 配置  DRBD8.4.3
  2. “半价买2080Ti”,英伟达发布RTX 30系列显卡,性能翻倍价格更低,网友高呼“NVIDIA YES”...
  3. mysql免安装版的问题
  4. 国内外免费电子书(数学、算法、图像、深度学习、机器学习)
  5. c语言怎么让两个函数同时进行_Excel高级筛选怎么用同时满足多个条件进行筛选...
  6. 超多趣味测评测试微信小程序源码 可插入流量主广告位 无后台
  7. java 改变文件权限_Java文件权限
  8. 回顾|腾讯AI打败王者荣耀职业队,AI训练一天等于人类440年
  9. 复合索引列顺序对性能的影响
  10. 暴风影音3 Build version : 3.7.11.13 漏洞
  11. QQ群发消息c语言编程,简单写一个实现QQ群发功能的软件
  12. 【历史上的今天】4 月 18 日:第一款交互式电子游戏;IBM 率先研发兆位芯片;硬件公司 Roland 成立
  13. COIL:结合稠密检索和词汇匹配的更高效检索模型
  14. JVM调优前置知识-深堆Retained Heap和浅堆Shallow Heap
  15. 【HTTP】Fiddler(二) - 使用Fiddler做抓包分析
  16. node.js - 单元测试框架macha
  17. 如果你决定离职,请把这五样东西留下,要不然你必身败名裂
  18. java oval 入门_java开源验证框架OVAL-Go语言中文社区
  19. 企业信息安全不能大意,不提早防范容易中招——推荐导入ISO27001系列标准
  20. JVM读书笔记之GC算法

热门文章

  1. Block背后的数据结构及变量截取
  2. OPENCV 实现引导滤波
  3. 外卖返利系统|外卖返利系统小程序|外卖系统|返利系统
  4. 白色简洁大方公司企业网站源码 WordPress主题2款
  5. 离散KL变换原理、实例以及matlab实现
  6. 数据通信技术_数据通信浅析
  7. 单自由度面内柔性机械臂的APDL命令流建模(瞬态动力学求解)与动画演示
  8. 计算机的应用 教案,计算机应用基础教案范文
  9. SQL Server 2008存储结构——GAM和SGAM、PFS结构、IAM结构、DCMBCM
  10. cocos3.5塔防游戏开发---复习cocos2dx结束(明天重启仙剑)