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. Python通过分页对数据进行展示

    # 通过分页对数据进行展示 """ 要求: 每页显示10条数据 让用户输入要查看的页面:页码 """ USER_LIST = [] for ...

  2. java Concurrent并发容器类 小结

    Java1.5提供了多种并发容器类来改进同步容器的性能. 同步容器将所有对容器的访问都串行化,以实现他们的线程安全性.这种方法的代价是严重降低并发性,当多个线程竞争容器的锁时,吞吐量将严重减低.  一 ...

  3. Chrome firefox ie等浏览器空格&nbsp;宽度不一样

    用半角空格 或者全角空格   相当于半格中文字符的宽度, 相当于一个中文字符宽度. 注:在chrome中两个 占一个汉字的宽度;,而在IE.firefox中四个 才占一个汉字的宽度.

  4. Ubuntu18.04问题记录

    1. pip install 包时偶然间碰上了如下问题: Could not install packages due to an EnvironmentError: [Errno 13] 权限不够: ...

  5. django登录

    一. form表单使用注意事项: 1. action="" 提交地址, method='post' 请求方式 2. input 标签要有name属性才能被获取 3. 有一个inpu ...

  6. C# 对MongoDB 进行增删改查的简单操作

    C# 对MongoDB 进行增删改查的简单操作   下面演示下C#操作MongoDB驱动的简单的增删改查代码 运用到的MongoDB支持的C#驱动,当前版本为1.6.0 1,连接数据库   /// & ...

  7. Python-form表单标签

    语义:标记表单 #1.什么是表单? 表单就是专门用来接收用户输入或采集用户信息的 #2.表单的格式 <form> <表单元素> </form> 链接:https:/ ...

  8. js编译原理(你不知道的javascript)

    虽然通常将js归类为"动态"或"解释执行"语言,但其实也可把它看成是一门编译语言.只不过这个所谓的编译与传统的编译语言不同,它不是提前编译的,编译结果也不能在分 ...

  9. verilog 仿真时读取txt文件

    :]data; initial begin # clk =; clk = ~clk; end initial begin # rst=; # rst=; end :]data_sin[:]; //// ...

  10. SQL入门(3):定义约束/断言assertion/触发器trigger

    本文介绍数据库的完整性 完整性控制程序: 指定规则,检查规则 (规则就是约束条件) 动态约束 intergrity constraint::=(O,P,A,R) O : 数据集合, 约束的对象 ?: ...