有些时候,配置一个spring+mybatis框架,然后写xml,dao ,service显得特别繁琐。

如果我们只是想查一下数据库,不考虑连接复用也不考虑动态sql,可以用原生的jdbc来实现,方便快捷,也有利于认识原生jdbc。

我们需要的东西其实不多:

一个数据库连接的配置文件(甚至这个也可以不需要),

db.properties

driver=oracle.jdbc.driver.OracleDriver
url=jdbc:oracle:thin:@ip:port:sid
user=username
password=pwd

一个class

import java.io.IOException;
import java.sql.*;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties; /**
* Created by tm on 2016/12/16.
*/
public class Test { /**
* 初始化数据库,加载驱动。
* 调用方法
* @param args
*/
public static void main(String[] args) {
DbConfig.initDriver();
Map<String,Object> data = new HashMap<String, Object>();
Test test = new Test();
System.out.println(test.updateState(data));
} /**
* 更新某个状态
* @param data
* @return
*/
public boolean updateState(Map<String, Object> data) {
Connection conn = null;
boolean flag = false;
try {
String sql = "update table set a=?,b=? ";
conn = DriverManager.getConnection(dbConfig.url, dbConfig.user, dbConfig.password);
PreparedStatement state = conn.prepareStatement(sql);
state.setInt(1,1);
state.setString(2,"2");
int count = state.executeUpdate();
if(count>0){
flag = true;
}
conn.commit();
state.close();
} catch (Exception e) {
e.printStackTrace();
} finally {
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
return flag;
} /**
* 静态内部类,初始化之后就一直存在不会随对象变化。
* 持有数据库信息
*/
static class DbConfig{
static String url;
static String user;
static String password; /**
* init db driver
*/
public static void initDriver() {
Properties props = new Properties();
{
try {
props.load(dbConfig.class.getClassLoader().getResourceAsStream("db.properties"));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.exit(-1);
}
} String driver = props.getProperty("driver");
try {
Class.forName(driver);
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.exit(-1);
} dbConfig.url = props.getProperty("url");
dbConfig.user = props.getProperty("user");
dbConfig.password = props.getProperty("password");
}
}
}

数据库驱动ojdbc6、或者mysql驱动。

当然,以上只是非常简单的用法,不考虑任何的扩展性重用性之类的。

如果有稍微多一点的需求,就最好自己写个dao。如果再多一点的需求就考虑使用框架了。

贴一个简单的连接管理工具,DBUtil

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Properties; import org.apache.commons.dbcp.BasicDataSource; /**
* 负责管理数据库连接
* @author TM
*
*/
public class DBUtil {
//连接池
private static BasicDataSource cp; static{
/*
* 初始化静态属性!
* 静态块由于是在类第一次加载时执行
* 并且只会执行一次,所以在这里初始化静态属性是
* 最适合的地方。
*/
//java.util.properties
Properties prop =new Properties();
try {
prop.load(new FileInputStream("config.properties"));
//根据配置项初始化
String driverName=prop.getProperty("driverName");
String url=prop.getProperty("url");
String username=prop.getProperty("username");
String password=prop.getProperty("password");
//最大连接数
int maxActive=Integer.parseInt(prop.getProperty("maxActive"));
//最大等待时间
int maxWait=Integer.parseInt(prop.getProperty("maxWait")); System.out.println(driverName+"\n"+url+"\n"+username+"\n"+password);
System.out.println(maxActive+"\n"+maxWait);
//初始化连接池
cp=new BasicDataSource();
//相当于Class.forName()中的内容
cp.setDriverClassName(driverName);
cp.setUrl(url);
cp.setUsername(username);
cp.setPassword(password);
cp.setMaxActive(maxActive);
cp.setMaxWait(maxWait); } catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 获取一个数据库连接
* @return
* @throws Exception
*/
public static Connection getConnection() throws Exception{
/*
* 向连接池要一条可用的空闲连接
* 若连接池尚有可用连接,会直接返回
* 若没有,则该方法进入阻塞状态,等待可用连接
* 等待的时间(就是初始化连接池时设置的maxWait)
* 与初始化连接池时设置的maxWait的时间一致
* 若等待的时间内出现可用的空闲连接
* 则该方法会立刻返回该连接,若等待的时间超过maxWait后
* 仍然没有获得可用连接,该方法会抛出超时异常。
*/
return cp.getConnection();
} /**
* 将给定的数据库连接关闭
* @param conn
*/
public static void closeConnection(Connection conn){
try{
if(conn!=null){
//只是还给了连接池了。
conn.close();
} }catch(Exception e){
e.printStackTrace();
} } public static void main(String[] args) throws Exception{
Connection conn=DBUtil.getConnection();
}
}

  

一个简单的java jdbc案例的更多相关文章

  1. 一个简单的Maven小案例

    Maven是一个很好的软件项目管理工具,有了Maven我们不用再费劲的去官网上下载Jar包. Maven的官网地址:http://maven.apache.org/download.cgi 要建立一个 ...

  2. 一个简单的Java web服务器实现

    前言 一个简单的Java web服务器实现,比较简单,基于java.net.Socket和java.net.ServerSocket实现: 程序执行步骤 创建一个ServerSocket对象: 调用S ...

  3. Java学习笔记 11/15:一个简单的JAVA例子

    首先来看一个简单的 Java 程序. 来看下面这个程序,试试看是否看得出它是在做哪些事情! 范例:TestJava.java   // TestJava.java,java 的简单范例  public ...

  4. Java入门篇(一)——如何编写一个简单的Java程序

    最近准备花费很长一段时间写一些关于Java的从入门到进阶再到项目开发的教程,希望对初学Java的朋友们有所帮助,更快的融入Java的学习之中. 主要内容包括JavaSE.JavaEE的基础知识以及如何 ...

  5. Ant—使用Ant构建一个简单的Java工程(两)

    博客<Ant-使用Ant构建一个简单的Java项目(一)>演示了使用Ant工具构建简单的Java项目,接着这个样例来进一步学习Ant: 上面样例须要运行多条ant命令才干运行Test类中的 ...

  6. IntelliJ IDEA创建一个简单的Java Project(二)

    1.  选择要创建的项目类型,同时配置本地的JDK 2. 是否使用模板创建项目 3. 选择项目在本地的存储位置 4. 点击Finish,完成一个简单的Java工程的创建.

  7. 利用 Docker 构建一个简单的 java 开发编译环境

    目前 Java 语言的版本很多,除了常用的 Java 8,有一些遗留项目可能使用了 Java 7,也可能有一些比较新的的项目使用了 Java 10 以上的版本.如果想切换自己本地的 Java 开发环境 ...

  8. 【Java】一个简单的Java应用程序

    简单记录,Java 核心技术卷I 基础知识(原书第10 版) 一个简单的Java应用程序"Hello, World!" Hello, World! Goodbye,World! 一 ...

  9. 一个简单的Java应用程序

    目录 一个简单的Java应用程序 首次运行结果 程序示例 运行结果 修改大小写之后的运行结果 程序示例 运行结果 关键字public 关键字class 类名及其命名规则 类名必须以字母开头 不能使用J ...

随机推荐

  1. java 面试随笔

    ---恢复内容开始--- 1.自我介绍 2.你在项目开发过程中遇到的那些问题! 3.懂bootstrap么?简单介绍一下 4.spring的会话数据是怎样的. 5.为什么会有session 因为htt ...

  2. sqlserver创建同义词

    https://blog.csdn.net/anderslu/article/details/53433841?utm_source=itdadao&utm_medium=referral 例 ...

  3. 深入理解JAVA虚拟机JVM

    深入理解JAVA虚拟机JVM Java 虚拟机(Java virtual machine,JVM)是运行 Java 程序必不可少的机制.java之所以能实现一次编写到处执行,也就是因为jVM.原理:编 ...

  4. 【hihocoder编程练习赛9】闰秒

    题目链接 #include<stdio.h> #include<string.h> #include<algorithm> #include<math.h&g ...

  5. 【bzoj2876】 Noi2012—骑行川藏

    http://www.lydsy.com/JudgeOnline/problem.php?id=2876 (题目链接) 题意 在满足约束条件$${\sum_{i=1}^ns_ik_i(v_i-v_i' ...

  6. CVE-2018-1111劫持dhcp造成centos代码执行漏洞

    0x01 漏洞概述 近日,红帽官方发布了安全更新,修复了编号为CVE-2018-1111的远程代码执行漏洞,攻击者可以通过伪造DHCP服务器发送响应包,攻击红帽系统,获取root权限并执行任意命令. ...

  7. 解题:HAOI 2012 道路

    题面 这题不开O2怎么过=.= 可能这种有关最短路的计数题做多了就有些感觉了...... 以每个点为基准跑出一张最短路图,然后对每个边$(u,v)$统计两个东西.一个$pre[u]$表示到达$u$这个 ...

  8. (转)Tomcat version 7.0 only supports J2EE 1.2, 1.3, 1.4, and Java EE 5 and 6 Web mod

    背景:在sts中导入web项目,却不能通过sts中的tomcat来加载该服务,并报出如下错误. “Tomcat version 7.0 only supports J2EE 1.2, 1.3, 1.4 ...

  9. 团体程序设计天梯赛 L1-049. 天梯赛座位分配(测试数据+不同方法)

    Data: /*33 2 1#11 4 7 10 13 16 19 22 25 2831 33 35 37 39 41 43 45 47 4951 53 55 57 59 61 63 65 67 69 ...

  10. 转载OPENCV学习随笔

    转载自 亦轩Dhc http://www.cnblogs.com/daihengchen/p/5492729.html 学习笔记:使用opencv做双目测距(相机标定+立体匹配+测距).   最近在做 ...