java jdbc操作数据库通用代码
1.准备工作
1》

新建一个配置文件,名为jdbc.properties将其放入src中
2》在项目中导入jdbc驱动,注意连接不同的数据库,所用到的驱动是不一样的,这些在网上都能找到
具体导入jar的方法,请参照http://blog.csdn.net/mazhaojuan/article/details/21403717
2、代码
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties; public class Main {
public static void main(String[] args) {
DBUtil dbUtil = new DBUtil();
dbUtil.R("select * from table");
}
} class DBUtil{
/**
* 得到数据库连接
* @return
* @throws Exception
*/
public Connection getConnection() throws Exception{
//1.创建配置文件并得到对象输入流
InputStream is = this.getClass().getClassLoader().getResourceAsStream("jdbc.properties");
//2.创建propetities
Properties jdbc = new Properties();
jdbc.load(is);
//3. 通过key-value 的方式得到对应的值
String driver = jdbc.getProperty("driver");
String url = jdbc.getProperty("url");
String user = jdbc.getProperty("user");
String password = jdbc.getProperty("password");
//4.加载运行时类对象
Class.forName(driver);
//5通过DriverManager得到连接
Connection connection = DriverManager.getConnection(url,user,password);
return connection; }
/**
* 释放资源的方法
* @param connection
* @param statement
* @param resultSet
*/
public void release(Connection connection,Statement statement,ResultSet resultSet){
try {
if(resultSet!=null){
resultSet.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
try {
if(statement!=null){
statement.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
try {
if(connection!=null){
connection.close();
}
} catch (SQLException e) {
e.printStackTrace();
} }
/**
* 查询数据库的方法
* @param sql 字符串,要执行的sql语句 如果其中有变量的话,就用 ‘"+变量+"’
*/
public void R(String sql){
Connection connection = null;
Statement statement = null;
ResultSet resultSet = null;
try {
connection = getConnection();
statement = connection.createStatement();
resultSet = statement.executeQuery(sql);
while(resultSet.next()!=false){
//这里可以执行一些其他的操作
System.out.println(resultSet.getString(1));
}
} catch (Exception e) {
e.printStackTrace();
}finally {
release(connection, statement, resultSet);
}
}
/**
* 数据库记录增删改的方法
* @param sql 字符串,要执行的sql语句 如果其中有变量的话,就用 ‘"+变量+"’
*/
public void CUD(String sql){
Connection connection = null;
Statement statement = null;
int result = 0;
try {
connection = getConnection();
statement = connection.createStatement();
result = statement.executeUpdate(sql); //这里可以根据返回结果(影响记录的条数) 进行判断,该语句是否执行成功
System.out.println(result);
} catch (Exception e) {
e.printStackTrace();
}finally {
release(connection, statement, null);
}
} }
3.预处理,其中上面的连接数据库及释放资源的方法不动
代码如下:
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties; public class Main {
public static void main(String[] args) { }
} class DBUtil{
/**
* 得到数据库连接
* @return
* @throws Exception
*/
public Connection getConnection() throws Exception{
//1.创建配置文件并得到对象输入流
InputStream is = this.getClass().getClassLoader().getResourceAsStream("jdbc.properties.txt");
//2.创建propetities
Properties jdbc = new Properties();
jdbc.load(is);
//3. 通过key-value 的方式得到对应的值
String driver = jdbc.getProperty("driver");
String url = jdbc.getProperty("url");
String user = jdbc.getProperty("user");
String password = jdbc.getProperty("password");
//4.加载运行时类对象
Class.forName(driver);
//5通过DriverManager得到连接
Connection connection = DriverManager.getConnection(url,user,password);
return connection; }
/**
* 释放资源的方法
* @param connection
* @param statement
* @param resultSet
*/
public void release(Connection connection,Statement statement,ResultSet resultSet){
try {
if(resultSet!=null){
resultSet.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
try {
if(statement!=null){
statement.close();
}
} catch (Exception e) {
// TODO: handle exception
}
try{
if(connection!=null){
connection.close();
}
} catch (SQLException e) {
e.printStackTrace();
} }
/**
* 查询数据库的方法
* @param sql 字符串,要执行的sql语句 如果其中有变量的话,就用 ‘"+变量+"’
*/
public void R(String sql, Object ...args){
Connection connection = null;
PreparedStatement preparedStatement = null;
ResultSet resultSet = null;
try {
connection = getConnection();
preparedStatement = connection.prepareStatement(sql);
for (int i = 0; i < args.length; i++) {
preparedStatement.setObject(i+1, args[i]);
}
resultSet = preparedStatement.executeQuery();
ResultSetMetaData resultSetMetaData = resultSet.getMetaData();
int columnCount = resultSetMetaData.getColumnCount();
while(resultSet.next()!=false){
//这里可以执行一些其他的操作
for (int i = 1; i <= columnCount; i++) {
System.out.println(resultSet.getString(i));
}
}
} catch (Exception e) {
e.printStackTrace();
}finally {
release(connection, preparedStatement, resultSet);
}
}
/**
* 数据库记录增删改的方法
* @param sql 字符串,要执行的sql语句 如果其中有变量的话,就用 ‘"+变量+"’
*/
public void CUD(String sql, Object ...args){
Connection connection = null;
PreparedStatement preparedStatement = null;
int result = 0;
try {
connection = getConnection();
preparedStatement = connection.prepareStatement(sql);
for (int i = 0; i < args.length; i++) {
preparedStatement.setObject(i+1, args[i]);
}
result = preparedStatement.executeUpdate();
//这里可以根据返回结果(影响记录的条数)进行判断,该语句是否执行成功
System.out.println(result);
} catch (Exception e) {
e.printStackTrace();
}finally {
release(connection, preparedStatement, null);
}
} }
在预处理代码第87行使用了元数据获取集合中的列的数量 有关数据库 元数据,请参考文档上的相关接口:
DatabaseMetaData
ResultSetMetaData
注:本文为原创,如需转载请注明出处:http://www.cnblogs.com/zhuchenglin/p/7919803.html
java jdbc操作数据库通用代码的更多相关文章
- Java jdbc 操作数据库详解
原文地址https://www.cnblogs.com/huguodong/p/5910859.html JDBC(Java Data Base Connectivity,java数据库连接)是一种用 ...
- Java笔记(第七篇 JDBC操作数据库)
JDBC是连接数据库和java程序的桥梁,通过JDBC API可以方便地实现对各种主流数据库的操作.学习java语言,必须学习JDBC技术,因为JDBC技术实在java语言中被广泛使用的一种操作数据库 ...
- Java基础之原生JDBC操作数据库
前言 日常开发中,我们都习惯了使用ORM框架来帮我们操作数据库,本文复习.记录Java如何使用原生JDBC操作数据库 代码编写 封装几个简单方法 find查询方法 findOne查询方法 update ...
- JDBC操作数据库的学习(2)
在上一篇博客<JDBC操作数据库的学习(1)>中通过对例1,我们已经学习了一个Java应用如何在程序中通过JDBC操作数据库的步骤流程,当然我们也说过这样的例子是无法在实际开发中使用的,本 ...
- JDBC操作数据库的学习(1)
单单对数据库的操作,比如说MySQL,我们可以在命令行窗口中执行,但是一般是应用程序要操作数据库,因此我们应该在程序中的代码上体现对数据库的操作,那么使用程序应用如何操作数据库呢?那就要使用到数据库的 ...
- JDBC操作数据库的三种方式比较
JDBC(java Database Connectivity)java数据库连接,是一种用于执行上sql语句的javaAPI,可以为多种关系型数据库提供统一访问接口.我们项目中经常用到的MySQL. ...
- Spark Streaming通过JDBC操作数据库
本文记录了学习使用Spark Streaming通过JDBC操作数据库的过程,源数据从Kafka中读取. Kafka从0.10版本提供了一种新的消费者API,和0.8不同,因此Spark Stream ...
- Spring入门(十五):使用Spring JDBC操作数据库
在本系列的之前博客中,我们从没有讲解过操作数据库的方法,但是在实际的工作中,几乎所有的系统都离不开数据的持久化,所以掌握操作数据库的使用方法就非常重要. 在Spring中,操作数据库有很多种方法,我们 ...
- JDBC操作数据库实例
jdbc操作数据库实例 1.jdbc创建数据库 1.1 前提条件 1.拥有创建和删除表的权限 2.数据库已经启动,且可用 1.2 jdbc创建数据库表的步骤: 导包:导入需要进行数据库编程的 JDBC ...
随机推荐
- JS转换HTML转义符,编码及解码
JS转换HTML转义符 //去掉html标签 function removeHtmlTab(tab) { return tab.replace(/<[^<>]+?>/g,'') ...
- [再寄小读者之数学篇](2014-06-22 求极限 [中国科学技术大学2011年高等数学B考研试题])
设数列 $\sed{x_n}$ 满足 $0<x_1<\pi$, $x_{n+1}=\sin x_n\ (n=1,2,\cdots)$. (1) 证明 $\dps{\vlm{n}x_n}$ ...
- Concurrent下的线程安全集合
1.ArrayBlockingQueue ArrayBlockingQueue是由数组支持的线程安全的有界阻塞队列,此队列按 FIFO(先进先出)原则对元素进行排序.这是一个典型的“有界缓存区”,固定 ...
- url的三个js编码函数escape(),encodeURI(),encodeURIComponent()简介【转】
引子 浏览器URl地址,上网一定会用到,但是浏览器地址有中文或者浏览器url参数操作的时候,经常会用到encodeURIComponent()和decodeURIComponent()以及encode ...
- dubbo启动时检查服务
Dubbo 缺省会在启动时检查依赖的服务是否可用,不可用时会抛出异常,阻止 Spring 初始化完成,以便上线时,能及早发现问题,默认 check="true". 可以通过 che ...
- Linux 虚拟机上安装linux系统 (ip:子网掩码,网关,dns,交换机,路由知识回顾)
一 安装虚拟机 二 虚拟机上配置好在安装linux系统 三 知识回顾 交换机:主机在局域网内的身份是MAC地址(可以通过[交换机广播:交换机通过被动学习来建立一张“接口号”和“MAC地址”的对照表]或 ...
- 【原创】大叔问题定位分享(30)mesos agent启动失败:Failed to perform recovery: Incompatible agent info detected
mesos agent启动失败,报错如下: Feb 15 22:03:18 server1.bj mesos-slave[1190]: E0215 22:03:18.622994 1192 slave ...
- iOS app内打开safari完成google的OAuth2认证
最近使用google的oauth认证,发现不再允许使用UIWebview进行认证了,必须使用系统游览器,使用游览器也不一定要在app之间跳转,ios使用SFSafariViewController就可 ...
- 关于数据库中日期格式(yy-MM-dd HH-mm-ss)通过json传到后台变成毫秒数的问题
在日期封装对象前面加一个json标签即可防止自动转换 如 @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date mod ...
- docker /var/lib/docker/aufs/mnt 目录满了,全是垃圾数据
#!/bin/sh echo "==================== start clean docker containers logs ======================= ...