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 ...
随机推荐
- 使用C语言中qsort()函数对浮点型数组无法成功排序的问题
一 写在开头 1.1 本节内容 本节主要内容是有关C语言中qsort()函数的探讨. 二 问题和相应解决方法 qsort()是C标准库中的一个通用的排序函数.它既能对整型数据进行排序也能对浮点型数据进 ...
- luogu 3084 单调队列+dp
注意处理出两个数组: r[i] 能覆盖i点的区间的左端点最小值(覆盖左侧最远处) l[i] i不能覆盖的区间的左端点左端点最大值 在该区间内寻找用来更新f[i] 答案的 j 即 l[i]<= j ...
- Codeforces 1100F(线性基+贪心)
题目链接 题意 给定序列,$q(1\leq q \leq 100000) $次询问,每次查询给定区间内的最大异或子集. 思路 涉及到最大异或子集肯定从线性基角度入手.将询问按右端点排序后离线处理询问, ...
- 6.linux安装tomcat
1.下载安装包 https://tomcat.apache.org/download-80.cgi 2.用 WinSCP 将本地的安装包 上传到 linux 服务器中 3.解压安装包( ...
- eclipse下classes文件夹无法发布到tomcat的问题--tomcat发布慢的问题
=== 解决eclipse下classes文件夹无法发布到tomcat的问题_Nautilus_新浪博客http://blog.sina.com.cn/s/blog_484d8777010130n5. ...
- windows :config windows update … 一直处于假死状态
参考文章:http://www.cnblogs.com/teacat/p/9204225.html 环境:win7 64bit 旗舰版 问题:重启后,系统更新到35%后,一直处于假死状态,未能正确进入 ...
- 【原创】大叔经验分享(11)python引入模块报错ImportError: No module named pandas numpy
python应用通常需要一些库,比如numpy.pandas等,安装也很简单,直接通过pip # pip install numpyRequirement already satisfied: num ...
- 【原创】大叔经验分享(44)hdfs副本数量
当hdfs空间不足时,除了删除临时数据或垃圾数据之外,还可以适当调整部分大目录的副本数量,多管齐下: 1 查看 $ hdfs dfs -ls /user/hive/warehouse/temp.db/ ...
- python回归分析五部曲
Python回归分析五部曲(一)—简单线性回归 https://blog.csdn.net/jacky_zhuyuanlu/article/details/78878405?ref=myread Py ...
- lua分割字符串
str = "abc;123;345" local tab = string.split(str, ";") 然后list里面就是 abc123345 了.第二 ...