java mysql sqlhelper_SQLHelper 的 java版本 - 转载
Ⅰ.引言
使用该类目的就是让使用者更方便、更安全的对数据库的操作,既是除了在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版本 - 转载相关推荐
- java mysql 酒店信息,java+mysql酒店信息管理系统的设计论文
摘 要: 现代化的酒店是集客房.餐饮.商务及其他各种服务为一体的消费场所,酒店组织庞大.信息量大.服务项目多,要想提高服务质量和管理水平,进而促进经济效益,必须借助计算机技术来进行现代化的信息管理. ...
- java mysql 获取页码,java获取word页数
1.java 要怎么准确获取word的总页数 XWPFDocument docx = new XWPFDocument(POIXMLDocument.openPackage(电月度例会会议纪要.doc ...
- java mysql 数据类型对照
java mysql 数据类型对照 java mysql 数据类型对照 类型名称 显示长度 数据库类型 JAVA类型 JDBC类型索引(int) 描述 VARCHAR L+N ...
- 使用Java+MYSQL搭建的上门预约家政服务源码,和大家交流一下
该源码使用Java+MYSQL搭建的 Java语言的特点 1.面向对象 面向对象(OOP)就是Java语言的基础,也是Java语言的重要特性.面向对象的概念:生活中的一切事物都可以被称之为对象,生活中 ...
- JDBC之 java - mysql 各个版本 jar包 驱动
方法一 JDBC之 java - mysql 各个版本 jar包 驱动 : http://central.maven.org/maven2/mysql/mysql-connector-java/ 例如 ...
- Oracle宣称Java将每半年发布一个版本
2019独角兽企业重金招聘Python工程师标准>>> Oracle近日宣布,他们将Java的发布频率改为每六个月一次. JCP执行委员会在八月份的会议上提到了这一说法,随后,Ora ...
- as3+java+mysql(mybatis) 数据自动工具(三)
介绍一下数据类配置,该数据类配置主要用于需要将数据库 mysql 数据转换成 java 对象,再转换为 as3 对象的数据类 配置文件为 xml 格式. <objects><obje ...
- 用 Java 技术创建 RESTful Web 服务--转载
简介 JAX-RS (JSR-311) 是为 Java EE 环境下的 RESTful 服务能力提供的一种规范.它能提供对传统的基于 SOAP 的 Web 服务的一种可行替代. 在本文中,了解 JAX ...
- Java 下实现锁无关数据结构--转载
介绍 通常在一个多线程环境下,我们需要共享某些数据,但为了避免竞争条件引致数据出现不一致的情况,某些代码段需要变成原子操作去执行.这时,我们便需要利用各种同步机制如互斥(Mutex)去为这些代码段加锁 ...
- mysql8连接数据库显示cache_MySQL数据库之mysql 8.0 java连接报错:Unknown system variable 'query_cache_size'...
本文主要向大家介绍了MySQL数据库之mysql 8.0 java连接报错:Unknown system variable 'query_cache_size' ,通过具体的内容向大家展现,希望对大家 ...
最新文章
- 详解rsync算法--如何减少同步文件时的网络传输量
- 自然语言处理笔记4-哈工大 关毅
- Android应用内加载pdf的方法?
- 以独占方式锁定此配置文件失败.另一个正在运行_JVM深入解析:运行时数据区+HotSpot+JMM+堆+GC+JVM优化+类加载
- MySQL中union和order by一起使用的方法
- aix系统下oracle之ora-00471,Oracle RAC 9.2.0.7 (AIX53,HA52)三台主机实例全down的问题
- 返回JSON出现Infinite recursion无限循环错误的解决
- Java中HttpClient设置超时时间
- img 标签的 src 属性
- Set static ip for ubuntu
- 3. 什么是icmp?icmp与ip的关系_Java抽象类、内部、类接口到底是什么?
- androd欢迎页播放视频和广告页面
- 毕业论文设置奇偶页页眉不同时,目录页也出现页眉,解决办法
- 0809 电子科学与技术一级学科简介
- Linux服务器cpu性能模式,linux cpu开启性能模式
- 解决 vendor.js 过大的问题
- zzuli_oj--python--1000: 整数a+b
- CHIPON 芯旺微的KF32A156系列的CAN FD模块的使用介绍
- 北京通信展的精华,都在这里!(上)
- 语音处理 之 libritts,AIShell