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操作数据库通用代码的更多相关文章

  1. Java jdbc 操作数据库详解

    原文地址https://www.cnblogs.com/huguodong/p/5910859.html JDBC(Java Data Base Connectivity,java数据库连接)是一种用 ...

  2. Java笔记(第七篇 JDBC操作数据库)

    JDBC是连接数据库和java程序的桥梁,通过JDBC API可以方便地实现对各种主流数据库的操作.学习java语言,必须学习JDBC技术,因为JDBC技术实在java语言中被广泛使用的一种操作数据库 ...

  3. Java基础之原生JDBC操作数据库

    前言 日常开发中,我们都习惯了使用ORM框架来帮我们操作数据库,本文复习.记录Java如何使用原生JDBC操作数据库 代码编写 封装几个简单方法 find查询方法 findOne查询方法 update ...

  4. JDBC操作数据库的学习(2)

    在上一篇博客<JDBC操作数据库的学习(1)>中通过对例1,我们已经学习了一个Java应用如何在程序中通过JDBC操作数据库的步骤流程,当然我们也说过这样的例子是无法在实际开发中使用的,本 ...

  5. JDBC操作数据库的学习(1)

    单单对数据库的操作,比如说MySQL,我们可以在命令行窗口中执行,但是一般是应用程序要操作数据库,因此我们应该在程序中的代码上体现对数据库的操作,那么使用程序应用如何操作数据库呢?那就要使用到数据库的 ...

  6. JDBC操作数据库的三种方式比较

    JDBC(java Database Connectivity)java数据库连接,是一种用于执行上sql语句的javaAPI,可以为多种关系型数据库提供统一访问接口.我们项目中经常用到的MySQL. ...

  7. Spark Streaming通过JDBC操作数据库

    本文记录了学习使用Spark Streaming通过JDBC操作数据库的过程,源数据从Kafka中读取. Kafka从0.10版本提供了一种新的消费者API,和0.8不同,因此Spark Stream ...

  8. Spring入门(十五):使用Spring JDBC操作数据库

    在本系列的之前博客中,我们从没有讲解过操作数据库的方法,但是在实际的工作中,几乎所有的系统都离不开数据的持久化,所以掌握操作数据库的使用方法就非常重要. 在Spring中,操作数据库有很多种方法,我们 ...

  9. JDBC操作数据库实例

    jdbc操作数据库实例 1.jdbc创建数据库 1.1 前提条件 1.拥有创建和删除表的权限 2.数据库已经启动,且可用 1.2 jdbc创建数据库表的步骤: 导包:导入需要进行数据库编程的 JDBC ...

随机推荐

  1. ajax扩展、jsonp、

    偷偷上传消息,首先想到ajax 而ajax是jquery是我们封装的功能. 方式一:ajax发消息 $.ajax({ url: '/ajax3.html', type: 'GET', //或者是POS ...

  2. APPLE-SA-2019-3-25-5 iTunes 12.9.4 for Windows

    APPLE-SA-2019-3-25-5 iTunes 12.9.4 for Windows iTunes 12.9.4 for Windows is now available and addres ...

  3. LESS知识总结

      知识体系 1.认识less 2.使用less 3.变量( variables  ) 4.混合 ( mixins  ) 5.嵌套规则 ( nested-rules  ) 6.运算(operation ...

  4. poj3126 Prime Path 广搜bfs

    题目: The ministers of the cabinet were quite upset by the message from the Chief of Security stating ...

  5. Unable to find header files

    在本模块导出头文件时,可以使用如下方式: LOCAL_EXPORT_C_INCLUDE_DIRS := $(MY_DIRECTORY_PATH) LOCAL_EXPORT_C_INCLUDES := ...

  6. Jmeter性能测试之进阶Java request的使用

    在IDE中引用Jmeter的安装目录lib/ext中两个文件ApacheJMeter_core.jar和ApacheJMeter_java.jar Java request的类需要继承Abstract ...

  7. jackson对日期的处理(序列化与反序列化)

    https://blog.csdn.net/cover1231988/article/details/76021478

  8. php memcached-gui工具

    转载: https://github.com/mailopl/memcached-gui/blob/master/memcached.php 适用于在服务端查看memcache内存数据 php代码: ...

  9. 西北地区打不开github的解决办法~

    泱泱我大西北,github打不开,的确痛苦的. http://ipaddress.com/ip_lookup/ 先查github.com 可能存在打不开的情况~ 随便找一个web在线代理,就可以查到了 ...

  10. 从Github上将laravel项目拉到新开发环境

    1.从github上将项目拉到本地 默认主分支:git clone https://github.com/my-user-name/my-project  /home/vagrant/laravel/ ...