jsp学习笔记(四)

package DAO;
import java.sql.*;
import java.util.ArrayList;
public class DBOperation {
private Connection conn = null;
private Statement st = null;
private PreparedStatement pst = null;
private ResultSet rs = null;
//数据转换器
public void DataChange(ArrayList param, PreparedStatement pst) throws SQLException{
for(int i=0,j=1; i<param.size();i++,j++){
if(param.get(i).getClass().getName().equals("java.lang.Integer")){
Integer temp=(Integer)(param.get(i));
pst.setInt(j, temp.intValue());//如果是整型。
}
else if(param.get(i).getClass().getName().equals("java.lang.Long")){
Long temp=(Long)(param.get(i));
pst.setLong(j,temp.longValue());//如果是长整型
}
else if(param.get(i).getClass().getName().equals("java.lang.Float")){
Float temp=(Float)(param.get(i));
pst.setFloat(j, temp.floatValue());//如果是浮点型
}
else if(param. get(i).getClass().getName().equals("java.lang.Double")){
Double temp=(Double)(param.get(i));
pst.setDouble(j, temp.doubleValue());//如果是double型
}
else if(param.get(i).getClass().getName().equals("java.lang.String"))
pst.setString(j, (String)(param.get(i)));//如果是字符串
else {System.out.println("error");}//其它暂不考虑。
}
}
}
//用于对表有简单插入、删除及修改操作。
public boolean insertDeleteUpdate(String sql , ArrayList param) {
boolean flag = true;
conn = DBConnection.getConn();
if(conn==null)return false;
try {
pst=conn.prepareStatement(sql);
DataChange(param,pst);//给“?”位置赋值。
pst.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
flag = false;
} finally {
DBConnection.close( conn, st ,rs);
}
return flag;
}
//成批数据的修改操作。
public boolean UpdateByBatch(String sql ,ArrayList param){
boolean flag=false;
try {
conn = DBConnection.getConn();
pst=conn.prepareStatement(sql);
conn.setAutoCommit(false);
// 若不出现异常,则继续执行到try语句完,否则跳转到catch语句中
for(int i=0;i<param.size();i++){
DataChange((ArrayList)param.get(i),pst);
pst.addBatch();
}
pst.executeBatch();
// commit:若成功执行完所有的插入操作,则正常结束
conn.commit();
flag=true;
}catch (SQLException e) {
e.printStackTrace();
//若出现异常,对数据库中所有已完成的操作全部撤销
try {conn.rollback();}
catch (Exception e1) {
e1.printStackTrace();
}
}
finally {
try{conn.setAutoCommit(true);}
catch(Exception e){}
DBConnection.close(conn, st , rs);
}
return flag;
}
/**
* <p>返回结果集及结果集中的列名的查询,用于普通查询</p>
* @param sql
* @return
*/
public ArrayList queryReturnList(String sql) {
ArrayList al = new ArrayList();
ResultSetMetaData rsmd = null;
String colname[];// 列名
int columns;
conn = DBConnection.getConn();
try {
st = conn.createStatement();
rs = st.executeQuery(sql);
rsmd = rs.getMetaData();
columns = rsmd.getColumnCount();// 获得列数;
colname = new String[columns];// 列名
for (int i = 1; i <=columns; i++)
colname[i-1] = rsmd.getColumnName(i);
while (rs.next()) {
ArrayList alRow = new ArrayList();
for (int i = 1; i <=columns; i++)
alRow.add(rs.getString(colname[i-1]));
al.add(alRow);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
DBConnection.close(conn, st, rs);
}
return al;
}
/**
* <p>返回boolean的查询操作,用于login等的服务</p>
* @param sql
* @return
*/
public boolean queryReturnboolean(String sql) {
boolean flag = true;
conn = DBConnection.getConn();
try {
st = conn.createStatement();
rs = st.executeQuery(sql);
if (!rs.next())
flag = false;
} catch (SQLException e) {
e.printStackTrace();
flag = false;
} finally {
DBConnection.close(conn,st, rs);
}
return flag;
}
//计算表的总记录数
public int getCount(String sql){
conn = DBConnection.getConn();
int num=0;
try {
st=conn.createStatement();
rs= st.executeQuery(sql);
rs.next();//结果集中,只有一条记录,其值为总记录数。
num=rs.getInt(1);//获得总记录数。
} catch (SQLException e) {
e.printStackTrace();
} finally {
DBConnection.close(conn, st , rs);
}
return num;
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值