有些时候,配置一个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. Luogu 3810 & BZOJ 3262 陌上花开/三维偏序 | CDQ分治

    Luogu 3810 & BZOJ 3263 陌上花开/三维偏序 | CDQ分治 题面 \(n\)个元素,每个元素有三个值:\(a_i\), \(b_i\) 和 \(c_i\).定义一个元素的 ...

  2. debian安装filebeat5.5收集nginx日志

    先贴一下我的BELK架构 1.Download and install the Public Signing Key: # wget -qO - https://artifacts.elastic.c ...

  3. md5sum命令行使用注意事项

    Linux下md5sum命令可以直接计算标准输入的hash值,使用方式为 echo -n '123456' | md5sum 注意给echo加上-n表示在尾部不加换行 命令行示例 $ echo -n ...

  4. python基础3--字符串

    字符串 1.大小写转换 >>> name 'bigberg' >>> name.capitalize() # 首字母大写 'Bigberg' >>> ...

  5. Java泛型底层源码解析-ArrayList,LinkedList,HashSet和HashMap

    声明:以下源代码使用的都是基于JDK1.8_112版本 1. ArrayList源码解析 <1. 集合中存放的依然是对象的引用而不是对象本身,且无法放置原生数据类型,我们需要使用原生数据类型的包 ...

  6. gulp+webpack配置

    转自:https://www.jianshu.com/p/2549c793bb27 gulp gulp是前端开发过程中对代码进行构建的工具,是自动化项目的构建利器:她不仅能对网站资源进行优化,而且在开 ...

  7. OC中线程安全的单例

    @implementation MySingleton + (instancetype)sharedInstance { static MySingleton* instance = nil; sta ...

  8. linux之top命令详解

    top:动态查看进程变化,监控linux的系统状况. top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器. 下面详细介绍它的使用方法 ...

  9. HDU 3802 矩阵快速幂 化简递推式子 加一点点二次剩余知识

    求$G(a,b,n,p) = (a^{\frac {p-1}{2}}+1)(b^{\frac{p-1}{2}}+1)[(\sqrt{a} + \sqrt{b})^{2F_n} + (\sqrt{a} ...

  10. eclipse 无法解析导入 javax.servlet 的解决方法

    出现上述问题的原因是你的Eclipse项目没有导入JSP运行所需要的Tomcat类库,主要是servlet-api.jar文件(或者servlet.jar),tomcat容器里面有这文件,在以下位置: ...