Ⅰ.引言

使用该类目的就是让使用者更方便、更安全的对数据库的操作,既是除了在SQLHelper类以外的所有类将不用引用对数据库操作的任何类与语句,无须担心数据库的连接与关闭的问题。但是,该类仍然需要大量的调试与修改。故此,请使用者不断完善该类,以至于能与SQLHelper(.NET版)的功能并驾齐驱。

Ⅱ.注意事项

1.使用前设置

手动修改以下代码段为当前连接数据库的代码段

private static Connection getConnect() {

try {

//修改代码段

} catch (Exception e) {

return null;

}

}

2. SQLHelper类支持数据库字段类型

1)文本类型

2)带符号整数类型

3)双精度浮点数类型

4)日期类型

注意:如果没有想要的类时,请手动添加到以下方法内

private static void prepareCommand(PreparedStatement pstmt, String[] parms)

throws Exception {

//代码段

}

另外,添加时请注意“从特殊到常用”原则,即将最特殊的类型放到try/catch语句的最高级的代码段区,将最常用的类型放到try/catch语句的最低级的代码段区。

Ⅲ.类方法说明

注意:正文内出现“【】”的区域在使用的时候必须进行相应替换,而“『』”的区域为替换的可选项。

1.SQLHelper.ExecuteNonQuery

作用:用于执行语句

返回类型:int

格式:

boolean state = false;

try {

String[] parms = {【参数区(如果类型为非String型,则"" + 变量)】};

int i = SQLHelper.ExecuteNonQuery(【SQL语句】, parms『可为null』);

if (i == 1) {

state = true;

}

} catch (Exception e) {

e.printStackTrace();

}

return state;

2. SQLHelper.ExecuteScalar

作用:用于获取单字段值语句

返回类型:Object

格式:

【变量类型】 【变量】 = 【初始化变量】

try {

String[] parms = { 【参数区(如果类型为非String型,则"" + 变量)】};

【变量】 = 『强制转换为变量的类型』SQLHelper.ExecuteScalar(【SQL语句】, 【列名或列名索引】, parms『可为null』)

.toString();

} catch (Exception e) {

e.printStackTrace();

}

return 【变量】;

3. SQLHelper.ExecuteReader

作用:用于获取结果集语句

返回类型:java.util.ArrayList

格式:

ArrayList al = new ArrayList();

try {

String[] parms = { 【参数区(如果类型为非String型,则"" + 变量)】};

al = SQLHelper.ExecuteReader(【SQL语句】, parms『可为null』);

al = getArrayListValues(al);

} catch (Exception e) {

errMessage = e.toString();

}

return al;

另外,添加以下两个函数:

//根据结果集获取其全部信息

private ArrayList getArrayListValues(ArrayList arrayList) throws Exception {

ArrayList al2 = new ArrayList();

for (int i = 0; i < arrayList.size(); i++) {

al2.add(getOneRowValues(i, new 【最终存放数据的变量类型】, arrayList));

}

return al2;

}

//根据行索引,获取其一行的所有信息

private TbUserBLL getOneRowValues(int i, 【最终存放数据的变量类型】【最终存放数据的变量】, ArrayList arrayList) throws Exception {

Object[] ob = (Object[]) arrayList.get(i);

【最终存放数据的变量】.setXX=『强制转换为其属性类型』ob[0].toString();

【最终存放数据的变量】.setXX=『强制转换为其属性类型』ob[X].toString();

return【最终存放数据的变量】;

}

Ⅳ.测试列表

注意:如果再对该类进行测试时,请按以下格式添加说明。

1.测试一

连接数据库方式:jdbc-odbc桥

使用数据库:Access

测试内容:对SQLHelper各方法的使用情况测试

测试人员:刘冀超

测试结果:成功。

Ⅴ.测试工具说明

1.数据库表

TbUser【用户表】

字段名

数据结构

允许空值

说 明

tbUserID

int

用户编号

tbUserName

varchar(20)

用户姓名

tbUserPwd

varchar(20)

用户密码

tbUserRole

int

用户角色

2.测试页面(Index.jsp)

说明:该页面包含了所有间接调用SQLHelper所提供的方法(即ExecuteNonQuery,ExecuteScalar,ExecuteReader)。如有需要请再以下标签前添加功能,

测试结果

并按照内部格式将错误信息放入errMessage的变量内。

/***作者:devilishking

*email:devilishking@126.com

**/packagecom.dal;importjavax.sql.DataSource;importjavax.naming.*;importjava.sql.Connection;importjava.sql.PreparedStatement;importjava.sql.ResultSet;importjava.util.*;importjava.sql.*;publicabstractclassSQLHelper {/*** 连接数据库

*

*@return*/privatestaticConnection getConnect() {try{

InitialContext context=newInitialContext();

DataSource ds=(DataSource) context.lookup("java:/MSAccessDS");returnds.getConnection();

}catch(Exception e) {returnnull;

}

}/*** 用于执行语句(eg:insert语句,update语句,delete语句)

*

*@paramString

*            cmdtext,SQL语句

*@paramOracleParameter[]

*            parms,参数集合

*@returnint,SQL语句影响的行数*/publicstaticintExecuteNonQuery(String cmdtext, String[] parms)throwsException {

PreparedStatement pstmt=null;

Connection conn=null;try{

conn=getConnect();

pstmt=conn.prepareStatement(cmdtext);

prepareCommand(pstmt, parms);returnpstmt.executeUpdate();

}catch(Exception e) {thrownewException("executeNonQuery方法出错:"+e.getMessage());

}finally{try{if(pstmt!=null)

pstmt.close();if(conn!=null)

conn.close();

}catch(Exception e) {thrownewException("执行executeNonQuery方法出错:"+e.getMessage());

}

}

}/*** 用于获取结果集语句(eg:selete * from table)

*

*@paramcmdtext

*@paramparms

*@returnResultSet

*@throwsException*/publicstaticArrayList ExecuteReader(String cmdtext, String[] parms)throwsException {

PreparedStatement pstmt=null;

Connection conn=null;try{

conn=getConnect();

pstmt=conn.prepareStatement(cmdtext);

prepareCommand(pstmt, parms);

ResultSet rs=pstmt.executeQuery();

ArrayList al=newArrayList();

ResultSetMetaData rsmd=rs.getMetaData();intcolumn=rsmd.getColumnCount();while(rs.next()) {

Object[] ob=newObject[column];for(inti=1; i<=column; i++) {

ob[i-1]=rs.getObject(i);

}

al.add(ob);

}

rs.close();returnal;

}catch(Exception e) {thrownewException("executeSqlResultSet方法出错:"+e.getMessage());

}finally{try{if(pstmt!=null)

pstmt.close();if(conn!=null)

conn.close();

}catch(Exception e) {thrownewException("executeSqlResultSet方法出错:"+e.getMessage());

}

}

}/*** 用于获取单字段值语句(用名字指定字段)

*

*@paramcmdtext

*            SQL语句

*@paramname

*            列名

*@paramparms

*            OracleParameter[]

*@returnObject

*@throwsException*/publicstaticObject ExecuteScalar(String cmdtext, String name,

String[] parms)throwsException {

PreparedStatement pstmt=null;

Connection conn=null;

ResultSet rs=null;try{

conn=getConnect();

pstmt=conn.prepareStatement(cmdtext);

prepareCommand(pstmt, parms);

rs=pstmt.executeQuery();if(rs.next()) {returnrs.getObject(name);

}else{returnnull;

}

}catch(Exception e) {thrownewException("executeSqlObject方法出错:"+e.getMessage());

}finally{try{if(rs!=null)

rs.close();if(pstmt!=null)

pstmt.close();if(conn!=null)

conn.close();

}catch(Exception e) {thrownewException("executeSqlObject方法出错:"+e.getMessage());

}

}

}/*** 用于获取单字段值语句(用序号指定字段)

*

*@paramcmdtext

*            SQL语句

*@paramindex

*            列名索引

*@paramparms

*            OracleParameter[]

*@returnObject

*@throwsException*/publicstaticObject ExecuteScalar(String cmdtext,intindex, String[] parms)throwsException {

PreparedStatement pstmt=null;

Connection conn=null;

ResultSet rs=null;try{

conn=getConnect();

pstmt=conn.prepareStatement(cmdtext);

prepareCommand(pstmt, parms);

rs=pstmt.executeQuery();if(rs.next()) {returnrs.getObject(index);

}else{returnnull;

}

}catch(Exception e) {thrownewException("executeSqlObject方法出错:"+e.getMessage());

}finally{try{if(rs!=null)

rs.close();if(pstmt!=null)

pstmt.close();if(conn!=null)

conn.close();

}catch(Exception e) {thrownewException("executeSqlObject方法出错:"+e.getMessage());

}

}

}/***@parampstmt

*@paramcmdtext

*@paramparms

*            Object[]

*@throwsException*/privatestaticvoidprepareCommand(PreparedStatement pstmt, String[] parms)throwsException {try{if(parms!=null) {for(inti=0; i

pstmt.setDate(i+1, java.sql.Date.valueOf(parms[i]));

}catch(Exception e) {try{

pstmt

.setDouble(i+1, Double

.parseDouble(parms[i]));

}catch(Exception e1) {try{

pstmt.setInt(i+1, Integer.parseInt(parms[i]));

}catch(Exception e2) {try{

pstmt.setString(i+1, parms[i]);

}catch(Exception e3) {

System.out

.print("SQLHelper-PrepareCommand Err1:"+e3);

}

}

}

}

}

}

}catch(Exception e1) {

System.out.print("SQLHelper-PrepareCommand Err2:"+e1);

}

}

}

java mysql sqlhelper_SQLHelper 的 java版本 - 转载相关推荐

  1. java mysql 酒店信息,java+mysql酒店信息管理系统的设计论文

    摘  要: 现代化的酒店是集客房.餐饮.商务及其他各种服务为一体的消费场所,酒店组织庞大.信息量大.服务项目多,要想提高服务质量和管理水平,进而促进经济效益,必须借助计算机技术来进行现代化的信息管理. ...

  2. java mysql 获取页码,java获取word页数

    1.java 要怎么准确获取word的总页数 XWPFDocument docx = new XWPFDocument(POIXMLDocument.openPackage(电月度例会会议纪要.doc ...

  3. java mysql 数据类型对照

    java mysql 数据类型对照 java mysql 数据类型对照 类型名称 显示长度 数据库类型 JAVA类型 JDBC类型索引(int) 描述             VARCHAR L+N ...

  4. 使用Java+MYSQL搭建的上门预约家政服务源码,和大家交流一下

    该源码使用Java+MYSQL搭建的 Java语言的特点 1.面向对象 面向对象(OOP)就是Java语言的基础,也是Java语言的重要特性.面向对象的概念:生活中的一切事物都可以被称之为对象,生活中 ...

  5. JDBC之 java - mysql 各个版本 jar包 驱动

    方法一 JDBC之 java - mysql 各个版本 jar包 驱动 : http://central.maven.org/maven2/mysql/mysql-connector-java/ 例如 ...

  6. Oracle宣称Java将每半年发布一个版本

    2019独角兽企业重金招聘Python工程师标准>>> Oracle近日宣布,他们将Java的发布频率改为每六个月一次. JCP执行委员会在八月份的会议上提到了这一说法,随后,Ora ...

  7. as3+java+mysql(mybatis) 数据自动工具(三)

    介绍一下数据类配置,该数据类配置主要用于需要将数据库 mysql 数据转换成 java 对象,再转换为 as3 对象的数据类 配置文件为 xml 格式. <objects><obje ...

  8. 用 Java 技术创建 RESTful Web 服务--转载

    简介 JAX-RS (JSR-311) 是为 Java EE 环境下的 RESTful 服务能力提供的一种规范.它能提供对传统的基于 SOAP 的 Web 服务的一种可行替代. 在本文中,了解 JAX ...

  9. Java 下实现锁无关数据结构--转载

    介绍 通常在一个多线程环境下,我们需要共享某些数据,但为了避免竞争条件引致数据出现不一致的情况,某些代码段需要变成原子操作去执行.这时,我们便需要利用各种同步机制如互斥(Mutex)去为这些代码段加锁 ...

  10. mysql8连接数据库显示cache_MySQL数据库之mysql 8.0 java连接报错:Unknown system variable 'query_cache_size'...

    本文主要向大家介绍了MySQL数据库之mysql 8.0 java连接报错:Unknown system variable 'query_cache_size' ,通过具体的内容向大家展现,希望对大家 ...

最新文章

  1. 详解rsync算法--如何减少同步文件时的网络传输量
  2. 自然语言处理笔记4-哈工大 关毅
  3. Android应用内加载pdf的方法?
  4. 以独占方式锁定此配置文件失败.另一个正在运行_JVM深入解析:运行时数据区+HotSpot+JMM+堆+GC+JVM优化+类加载
  5. MySQL中union和order by一起使用的方法
  6. aix系统下oracle之ora-00471,Oracle RAC 9.2.0.7 (AIX53,HA52)三台主机实例全down的问题
  7. 返回JSON出现Infinite recursion无限循环错误的解决
  8. Java中HttpClient设置超时时间
  9. img 标签的 src 属性
  10. Set static ip for ubuntu
  11. 3. 什么是icmp?icmp与ip的关系_Java抽象类、内部、类接口到底是什么?
  12. androd欢迎页播放视频和广告页面
  13. 毕业论文设置奇偶页页眉不同时,目录页也出现页眉,解决办法
  14. 0809 电子科学与技术一级学科简介
  15. Linux服务器cpu性能模式,linux cpu开启性能模式
  16. 解决 vendor.js 过大的问题
  17. zzuli_oj--python--1000: 整数a+b
  18. CHIPON 芯旺微的KF32A156系列的CAN FD模块的使用介绍
  19. 北京通信展的精华,都在这里!(上)
  20. 语音处理 之 libritts,AIShell

热门文章

  1. ListView刷新指定item
  2. 服务器系统怎么安装网卡驱动,Windows7系统怎么安装8139网卡驱动
  3. 如何成为优秀的管理者?(摘自《代码之道》第9章)
  4. 基于LabVIEW的轴承信号采集分析仪的设计
  5. 【C 语言提高、进阶】Day 3
  6. html添加在线音乐代码,给网页添加背景音乐的HTML代码
  7. 计算机网络基础中职期中,中职计算机网络基础期中试卷
  8. JavaScript 开发者的 5 款必备工具
  9. 轻量级前端路由 router directorjs兼容ie8
  10. 介绍一款免费的词典与文本翻译软件-灵格斯 lingoes