1、测试数据库

1.1 数据库数据

  

1.2 数据库结构

  

1.3 数据库脚本

DROP TABLE IF EXISTS `school`.`student`;

CREATE TABLE `school`.`student` (

`id` int(11) NOT NULL default '0',

`name` varchar(20) default NULL,

`sex` varchar(10) default NULL,

`age` int(10) default NULL,

PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO `student` VALUES ('201201', '张三', '男', '21');

INSERT INTO `student` VALUES ('201202', '李四', '男', '22');

INSERT INTO `student` VALUES ('201203', '王五', '女', '20');

INSERT INTO `student` VALUES ('201204', '赵六', '男', '21');

INSERT INTO `student` VALUES ('201205', '小红', '女', '19');

INSERT INTO `student` VALUES ('201206', '小明', '男', '22');

2、DBHelper用法

2.1 增加【Add】

示例代码

package com.hebut.util;

public class DBHelperApp {

/**

* 增加【Add】

*/

public static void main(String[] args) {

//第一种情况

String sql1="Insert Into student Values ('201208', '张三', '男', '21')";

System.out.println(DBHelper.executeNonQuery(sql1));

//第二种情况

String sql2="Insert Into student Values (?,?,?,?)";

Object[] obj = new Object[]{"201209","张三", "男", "21"};

System.out.println(DBHelper.executeNonQuery(sql2,obj));

}

}

运行结果

1)控制台

1

1

2)数据库

  

2.2 删除【Del】

示例代码

package com.hebut.util;

public class DBHelperApp {

/**

* 删除【Del】

*/

public static void main(String[] args) {

//第一种情况

String sql1="Delete From student Where id='201202'";

System.out.println(DBHelper.executeNonQuery(sql1));

//第二种情况

String sql2="Delete From student Where id=? And name=?";

Object[] obj = new Object[]{"201208","张三"};

System.out.println(DBHelper.executeNonQuery(sql2,obj));

}

}

运行结果

1)控制台

1

1

2)数据库

  

从图中可以看出id为"201202"和"201208"已经删除。

2.3 修改【Update】

示例代码

package com.hebut.util;

public class DBHelperApp {

/**

* 修改【Update】

*/

public static void main(String[] args) {

//第一种情况

String sql1="Update student Set age='27' Where id='201207'";

System.out.println(DBHelper.executeNonQuery(sql1));

//第二种情况

String sql2="Update student Set name=? Where id=?";

Object[] obj = new Object[]{"张二","201201"};

System.out.println(DBHelper.executeNonQuery(sql2,obj));

}

}

运行结果

1)控制台

1

1

2)数据库

  

  备注:后面的操作都以上面数据为基准。

2.4 查询【Query】

示例代码

package com.hebut.util;

import java.sql.ResultSet;

import java.sql.SQLException;

public class DBHelperApp {

/**

* 查询【Query】

@throws SQLException

*/

public static void main(String[] args) throws SQLException {

//第一种情况

String sql1="Select * From student";

//第一步:查询

ResultSet rs1 = DBHelper.executeQuery(sql1);

//第二步:输出

while(rs1.next()){

System.out.println("姓名:"+rs1.getString(2));

}

//第三步:关闭

DBHelper.free(rs1);

//第二种情况

String sql2="Select * From student Where name=?";

Object[] obj = new Object[]{"张三"};

//第一步:查询

ResultSet rs2 = DBHelper.executeQuery(sql2,obj);

//第二步:输出

while(rs2.next()){

System.out.println("学号:"+rs2.getString(1));

}

//第三步:关闭

DBHelper.free(rs2);

}

}

运行结果

姓名:张二

姓名:王五

姓名:赵六

姓名:小红

姓名:小明

姓名:张三

姓名:张三

学号:201207

学号:201209

2.5 获取查询行数

示例代码

package com.hebut.util;

public class DBHelperApp {

/**

* 获取查询行数

*/

public static void main(String[] args) {

//第一种情况

String sql1="Select * From student";

System.out.println(DBHelper.getCount(sql1));

//第二种情况

String sql2="Select * From student Where name=?";

Object[] obj = new Object[]{"张三"};

System.out.println(DBHelper.getCount(sql2,obj));

}

}

运行结果

7

2

2.6 判断记录存在

示例代码

package com.hebut.util;

public class DBHelperApp {

/**

* 判断记录存在

*/

public static void main(String[] args) {

//第一种情况

String sql1="Select * From student";

System.out.println(DBHelper.isExist(sql1));

//第二种情况

String sql2="Select * From student Where name=?";

Object[] obj = new Object[]{"张五"};

System.out.println(DBHelper.isExist(sql2,obj));

}

}

运行结果

true

false

3、DBHelper代码

package com.hebut.util;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

public final class DBHelper {

// 此方法为获取数据库连接

public static Connection getConnection() {

Connection conn = null;

try {

String driver = "com.mysql.jdbc.Driver"; // 数据库驱动

String url = "jdbc:MySQL://127.0.0.1:3306/school";// 数据库

String user = "root"; // 用户名

String password = "hadoop"; // 密码

Class.forName(driver); // 加载数据库驱动

if (null == conn) {

conn = DriverManager.getConnection(url, user, password);

}

catch (ClassNotFoundException e) {

System.out.println("Sorry,can't find the Driver!");

e.printStackTrace();

catch (SQLException e) {

e.printStackTrace();

catch (Exception e) {

e.printStackTrace();

}

return conn;

}

/**

* 增删改【Add、Del、Update】

*

@param sql

@return int

*/

public static int executeNonQuery(String sql) {

int result = 0;

Connection conn = null;

Statement stmt = null;

try {

conn = getConnection();

stmt = conn.createStatement();

result = stmt.executeUpdate(sql);

catch (SQLException err) {

err.printStackTrace();

free(null, stmt, conn);

finally {

free(null, stmt, conn);

}

return result;

}

/**

* 增删改【Add、Delete、Update】

*

@param sql

@param obj

@return int

*/

public static int executeNonQuery(String sql, Object... obj) {

int result = 0;

Connection conn = null;

PreparedStatement pstmt = null;

try {

conn = getConnection();

pstmt = conn.prepareStatement(sql);

for (int i = 0; i < obj.length; i++) {

pstmt.setObject(i + 1, obj[i]);

}

result = pstmt.executeUpdate();

catch (SQLException err) {

err.printStackTrace();

free(null, pstmt, conn);

finally {

free(null, pstmt, conn);

}

return result;

}

/**

* 查【Query】

*

@param sql

@return ResultSet

*/

public static ResultSet executeQuery(String sql) {

Connection conn = null;

Statement stmt = null;

ResultSet rs = null;

try {

conn = getConnection();

stmt = conn.createStatement();

rs = stmt.executeQuery(sql);

catch (SQLException err) {

err.printStackTrace();

free(rs, stmt, conn);

}

return rs;

}

/**

* 查【Query】

*

@param sql

@param obj

@return ResultSet

*/

public static ResultSet executeQuery(String sql, Object... obj) {

Connection conn = null;

PreparedStatement pstmt = null;

ResultSet rs = null;

try {

conn = getConnection();

pstmt = conn.prepareStatement(sql);

for (int i = 0; i < obj.length; i++) {

pstmt.setObject(i + 1, obj[i]);

}

rs = pstmt.executeQuery();

catch (SQLException err) {

err.printStackTrace();

free(rs, pstmt, conn);

}

return rs;

}

/**

* 判断记录是否存在

*

@param sql

@return Boolean

*/

public static Boolean isExist(String sql) {

ResultSet rs = null;

try {

rs = executeQuery(sql);

rs.last();

int count = rs.getRow();

if (count > 0) {

return true;

else {

return false;

}

catch (SQLException err) {

err.printStackTrace();

free(rs);

return false;

finally {

free(rs);

}

}

/**

* 判断记录是否存在

*

@param sql

@return Boolean

*/

public static Boolean isExist(String sql, Object... obj) {

ResultSet rs = null;

try {

rs = executeQuery(sql, obj);

rs.last();

int count = rs.getRow();

if (count > 0) {

return true;

else {

return false;

}

catch (SQLException err) {

err.printStackTrace();

free(rs);

return false;

finally {

free(rs);

}

}

/**

* 获取查询记录的总行数

*

@param sql

@return int

*/

public static int getCount(String sql) {

int result = 0;

ResultSet rs = null;

try {

rs = executeQuery(sql);

rs.last();

result = rs.getRow();

catch (SQLException err) {

free(rs);

err.printStackTrace();

finally {

free(rs);

}

return result;

}

/**

* 获取查询记录的总行数

*

@param sql

@param obj

@return int

*/

public static int getCount(String sql, Object... obj) {

int result = 0;

ResultSet rs = null;

try {

rs = executeQuery(sql, obj);

rs.last();

result = rs.getRow();

catch (SQLException err) {

err.printStackTrace();

finally {

free(rs);

}

return result;

}

/**

* 释放【ResultSet】资源

*

@param rs

*/

public static void free(ResultSet rs) {

try {

if (rs != null) {

rs.close();

}

catch (SQLException err) {

err.printStackTrace();

}

}

/**

* 释放【Statement】资源

*

@param st

*/

public static void free(Statement st) {

try {

if (st != null) {

st.close();

}

catch (SQLException err) {

err.printStackTrace();

}

}

/**

* 释放【Connection】资源

*

@param conn

*/

public static void free(Connection conn) {

try {

if (conn != null) {

conn.close();

}

catch (SQLException err) {

err.printStackTrace();

}

}

/**

* 释放所有数据资源

*

@param rs

@param st

@param conn

*/

public static void free(ResultSet rs, Statement st, Connection conn) {

free(rs);

free(st);

free(conn);

}

}

转载自:http://www.cnblogs.com/xia520pi/archive/2012/05/22/2513920.html

DBhelper封装jdbc并解决特殊字符的问题的更多相关文章

  1. Mybatis是如何封装Jdbc的?

    JDBC六个步骤 Connection conn = null; PreparedStatement ps = null; ResultSet rs = null; try { //1. 加载驱动 C ...

  2. MySQL数据库学习笔记(十一)----DAO设计模式实现数据库的增删改查(进一步封装JDBC工具类)

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

  3. MySQL数据库学习笔记(十)----JDBC事务处理、封装JDBC工具类

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

  4. MySQL JDBC事务处理、封装JDBC工具类

    MySQL数据库学习笔记(十)----JDBC事务处理.封装JDBC工具类 一.JDBC事务处理: 我们已经知道,事务的概念即:所有的操作要么同时成功,要么同时失败.在MySQL中提供了Commit. ...

  5. DAO设计模式实现数据库的增删改查(进一步封装JDBC工具类)

    DAO设计模式实现数据库的增删改查(进一步封装JDBC工具类) 一.DAO模式简介 DAO即Data Access Object,数据访问接口.数据访问:故名思义就是与数据库打交道.夹在业务逻辑与数据 ...

  6. 一、JDBC的概述 二、通过JDBC实现对数据的CRUD操作 三、封装JDBC访问数据的工具类 四、通过JDBC实现登陆和注册 五、防止SQL注入

    一.JDBC的概述###<1>概念 JDBC:java database connection ,java数据库连接技术 是java内部提供的一套操作数据库的接口(面向接口编程),实现对数 ...

  7. beyond compare解决特殊字符无法输出、多sheet页无法对比以及文件太大超出系统内存问题的Excel转txt脚本

    beyond compare解决特殊字符无法输出.多sheet页无法对比以及文件太大超出系统内存问题的Excel转txt脚本 ' XLS_to_CSV.vbs ' ' Converts an Exce ...

  8. java:Session(概述,三层架构实例(实现接口封装JDBC),Session实现简单购物车实例)

    1.Session概述: Session:在计算机中,尤其是在网络应用中,称为“会话控制”.Session 对象存储特定用户会话所需的属性及配置信息.这样,当用户在应用程序的 Web 页之间跳转时,存 ...

  9. Java封装JDBC数据库增、删、改、查操作成JAR文件,以供Web工程调用,适用于多种数据库

    废话不多说,直接上源代码,最后有使用方法,当然,也可以作为普通公用类使用,只是封装成JAR更方便使用. package db.util; import java.io.BufferedReader; ...

随机推荐

  1. express 笔记 app.helpers 和 app.locals

    app.helpers 和app.dynamicHelpers 是express2.X使用的 分别为静态/动态 视图助手通过其注册函数, 例如 app.helpers({ <span style ...

  2. [POJ3177]Redundant Paths(双联通)

    在看了春晚小彩旗的E技能(旋转)后就一直在lol……额抽点时间撸一题吧…… Redundant Paths Time Limit: 1000MS   Memory Limit: 65536K Tota ...

  3. EntityFramework_MVC4中EF5 新手入门教程之二 ---2.执行基本的 CRUD 功能

    在前面的教程中,您创建 MVC 应用程序中,存储和显示数据使用实体框架和 SQL 服务器 LocalDB.在本教程中,您会审查和自定义的 CRUD (创建. 读取. 更新. 删除) MVC 脚手架会自 ...

  4. jQuery使用之(二)设置元素的样式

    css是页面不能分隔的部分,jQuery中也提供了一些css相关的实用的办法.前面章节中有使用过 addClass()为元素添加css样式风格.本节主要介绍jQuery如何设置页面的样式风格.包括添加 ...

  5. MySQL配置

    一.登录MySQL 要登录到MySQL只需要使用如下命令. mysql -h localhost -u root -p localhost:IP地址: root:用户名: database:数据库名( ...

  6. 【C#】依赖于SharpZipLib的Zip压缩工具类

    上班第二天下班,课外作业,实现一个ZIP压缩的工具类.本来想用Package,但是写完了才发现不能解压其他工具压缩的zip包,比较麻烦,因此本工具类依赖了第三方的库(SharpZipLib  vers ...

  7. Qt学习思考

    对各个部件基本了解,初步理解GUI应用程序的创建 2D图形文字绘制,3D图形(openGL)等 模型/视图框架编程,处理复杂的数据 多媒体框架 数据库,xml,文件读写等 网络编程 做出比较美观的界面 ...

  8. Linux大文件已删除,但df查看已使用的空间并未减少解决

    在我的生活当中遇到磁盘快满了,这时候准备去删除一些大文件 于是我使用ncdu 查看了一下当前系统占用资源比较多的是那些文件,结果一看是elasticsearch的日志文件,好吧,竟然找到源头了,那就把 ...

  9. win7下面完全删除mysql

    今天因为一些原因重装完成mysql的时候,在启动mysql服务的时候,一直卡死在哪快.最后整的都无语了. 在google里搜索:mysql安装失败 ,会找到一堆类似的问题汇总,其实上面说的方法都是正确 ...

  10. MyEclipse------缓冲流的使用

    可以把BufferedReader和BufferedWriter称为上层流,把它们指向的字符流(Reader,Writer)称为底层流. Java采用缓存技术将上层流和底层流连接. 底层字符输入流先将 ...