java中JDBC基本操作的一个工具类,一些基本方法

来源:互联网 发布:赛尔网络集美大学 编辑:程序博客网 时间:2024/06/11 11:29
package com.help;


import java.io.UnsupportedEncodingException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;


import com.microsoft.sqlserver.jdbc.SQLServerDataSource;
import com.microsoft.sqlserver.jdbc.SQLServerException;


public final class Dbutils {
//1005和1008常量字段
public static final int TYPE=ResultSet.TYPE_SCROLL_SENSITIVE;
public static final int UPDATE=ResultSet.CONCUR_UPDATABLE;
private Dbutils(){}
//传入参数获取sql2005数据库连接的方法
public static Connection getConnection(String server,
String db,String user,String password){
SQLServerDataSource sds=new SQLServerDataSource();
sds.setServerName(server);
sds.setDatabaseName(db);
sds.setUser(user);
sds.setPassword(password);
Connection connection=null;
try {
connection=sds.getConnection();
} catch (SQLServerException e) {
e.printStackTrace();
}
return connection;
}
public static Connection getConnection(String db){
SQLServerDataSource sds=new SQLServerDataSource();
sds.setServerName("localhost");
sds.setDatabaseName(db);
sds.setUser("sa");
sds.setPassword("123456");
Connection connection=null;
try {
connection=sds.getConnection();
} catch (SQLServerException e) {
e.printStackTrace();
}
return connection;
}
//关闭数据库资源的方法,对此方法重载关闭多种数据库资源
public static void close(Connection conn){
if(conn!=null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
public static void close(Statement stmt){
if(stmt!=null){
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
public static void close(ResultSet rs){
if(rs!=null){
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}


//传入标准sql查询语句和Connection返回一个ResultSet(结果集),此SQL只能进行查询不能修改表
public static ResultSet getResultSet(String sql,Connection connection){
Statement stmt=null;
ResultSet rst=null;
try {
stmt=connection.createStatement(Dbutils.TYPE, Dbutils.UPDATE);
rst=stmt.executeQuery(sql);
} catch (SQLException e) {
e.printStackTrace();
}
return rst;
}
//传入sql语句,可以对表进行增删改查
public static void Update(String sql,Connection connection){
Statement stmt=null;
int a=0;
try {
stmt=connection.createStatement(Dbutils.TYPE,Dbutils.UPDATE);
a=stmt.executeUpdate(sql);
} catch (SQLException e) {
MyUnit.showMessage(e.getMessage());
}if(a>0){
System.out.println("更新成功");
}
}
//遍历结果集返回一个字符串
public static String getString(ResultSet rs){
ResultSetMetaData rsmt=null;
try {
rsmt=rs.getMetaData();
int a=rsmt.getColumnCount();
while(rs.next()){
for (int i = 1; i <= a; i++) {
if(i!=1){
System.out.print(",");
}
System.out.print(rs.getObject(i));
}
System.out.println();
}
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}
//返回一个表结果集行数的方法
public static int getRowCount(Connection connection,String tname){
ResultSet rs=getResultSet("select count(*) from "+"["+tname+"]", connection);

int page=0;
try {
while(rs.next()){
page=(Integer)rs.getObject(1);
}
} catch (SQLException e) {
e.printStackTrace();
}
return page;
}
//返回一个分页页数
public static int getPages(Connection connection,String tname,int pagesize){
if(connection==null||tname==null||pagesize<=0){
return 0;
}
int rows=getRowCount(connection, tname);
int pageSize=rows%pagesize==0?rows/pagesize:rows/pagesize+1;
return pageSize;
}
//获得一个带有列名的list
public static List<String> getColumnName(Connection connection,String tname){
PreparedStatement pstmt=null;
ResultSet rs=null;
List<String> ls=new ArrayList<String>();
try {
pstmt=connection.prepareStatement("select* from "+tname +" where 1<>1",Dbutils.TYPE,Dbutils.UPDATE);
rs=pstmt.executeQuery();
ResultSetMetaData rsmd=rs.getMetaData();
int column=rsmd.getColumnCount();
for (int i = 1; i <=column; i++) {
ls.add(rsmd.getColumnName(i));
}

} catch (SQLException e) {
e.printStackTrace();
}finally{
Dbutils.close(rs);
Dbutils.close(pstmt);
}
return ls;

}
//Jsp和servlet中get请求处理中文乱码的方法
public static String getNewString(String str) throws UnsupportedEncodingException{
return new String(str.getBytes("ISO-8859-1"),"UTF-8");
}
//传入3个参数:Connection,pageSize分页数,tableName,用分页方法返回一个List集合,其中每个元素都是一个结果集
public static String SelectPage(Connection connection,int pageSize,String columnname,String tablename){
//构造分页查询的标准SQL语句,其中row_number() over(order by 列名)函数返回一个自增的自然数列,
//按条件:rowid between ? and ?对表进行分页,其中?为每次分页的起始和结束
String sql="select * from (select row_number() over(order by "+
columnname+") rowid, * from "+tablename+") as temp where rowid between ? and ?";
PreparedStatement pstmt=null;
int rows = Dbutils.getRowCount(connection, tablename);//调用获得行数的方法
//分页的页数:如果可以被行数整除,商就是分页数,不能整除(商+1)就是分页数
int pages = rows % pageSize == 0 ? rows / pageSize : rows/pageSize + 1;
ResultSet rs=null;
String str=null;
try {
pstmt=connection.prepareStatement(sql,Dbutils.TYPE,Dbutils.UPDATE);
for (int i = 1; i <=pages ; i++) {
int start=1+(i-1)*pageSize;
int end=start+pageSize-1;
pstmt.setInt(1, start);
pstmt.setInt(2, end);
rs=pstmt.executeQuery();
str=Dbutils.getString(rs);
}
} catch (SQLException e) {
e.printStackTrace();
}
return str;
}

}
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 顺产侧切出院几天后伤口裂开怎么办 产后十几撕裂用卫生巾疼怎么办 婴儿绑肚脐的棉黏在肚脐上怎么办 割完双眼皮第五天了很痒怎么办 自体脂肪丰胸做完半年有团块怎么办 假体隆胸一个月了躺着睡很硬怎么办 假体隆胸半月俩胸大小不一样怎么办 假体隆胸拆线后还是起不来床怎么办 假体隆胸术后6天 天天胀痛怎么办 阴部大腿根长了个疙瘩有点痛怎么办 加盟费交了总部不做事怎么办 仓鼠从桌子摔下来后走路别扭怎么办 习惯了一个人天天找你聊天怎么办 来完月经外阴湿疹就严重怎么办 宝宝不肯喝开水尿黄黄的怎么办 做阴超做一半发现忘记换套了怎么办 穿裙子时拉链总往下掉怎么办 子宫内膜厚姨妈来的久怎么办 胸小胸罩往上跑肩带往两边掉怎么办 白衣服弄上姨妈血了洗了变黄怎么办 货物丢失了我感觉没丢这么多怎么办 想穿短裙 但是膝盖怕凉怎么办 被老公看到内裤很脏还有屎怎么办 排卵期同房了不知道怀没怀孕怎么办 清理空调时湿纸巾被卷进去怎么办 超市买的尿不湿质量太差怎么办 把卫生巾和衣服一起洗了怎么办 全面屏面对vo华为手机怎么办屏 雅漾喷雾的喷头坏了怎么办 悦诗风吟水里面有小颗粒怎么办 林肯mkz钥匙锁在车内怎么办 八四消毒液弄到衣服上怎么办 微信朋友圈发过的文章想修改怎么办 白色衣服被洗衣液染色了怎么办 准迁证和迁移证不想迁了怎么办 出了迁移证又想迁到其他地方怎么办 高中的会考如果没g合格怎么办 鞋子里自带的鞋垫坏了怎么办 入厕纸把私处伤了一下怎么办? 夏天做月子用姨妈巾热怎么办 涂了痔疮膏后怕粘到内裤怎么办