单例oracle什么意思,单例模式实现--Oracle数据库操作类

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.util.ArrayList;

public class OracleDbAccess {

private Connection con;//连接

private PreparedStatement  pstm;

private String dbIp="127.0.0.1";

private String dbPort="1521";

private String dbName="ICSS";

private String dbUser="jsp";

private String dbPwd="jsp";

private String conString="jdbc:oracle:thin:@"+dbIp+":"+dbPort+":"+dbName;

private static OracleDbAccess dba;//数据库操作类对象

//单例模式,构造函数私有

private OracleDbAccess(){

}

//单例模式,如果第一次使用则新建,如果不是则直接发送

public static OracleDbAccess getDbAccess(){

if(dba==null)

dba=new OracleDbAccess();

return dba;

}

//用户自己指定连接字符串

public  void setValue(String dbIp,String dbPort,String dbName,String dbUser,String dbPwd){

this.dbIp=dbIp;

this.dbPort=dbPort;

this.dbName=dbName;

this.dbUser=dbUser;

this.dbPwd=dbPwd;

this.conString="jdbc:oracle:thin:@"+dbIp+":"+dbPort+":"+dbName;

}

//获取数据库连接

private void getCon(){

try{

Class.forName("oracle.jdbc.driver.OracleDriver");//加载驱动包

try{

con=DriverManager.getConnection(conString,dbUser, dbPwd);//初始化数据库连接

}catch(Exception e){

System.out.println("初始化数据库连接失败!");

}

}catch(Exception e){

System.out.println("驱动包加载失败!");

}

}

private void excute(String sql){

if(con==null){//如果是第一次连接,则初始化连接

getCon();

}

try {

pstm=con.prepareStatement(sql);

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

public ResultSet getResultSet(String sql){//根据sql语句返回一个ResultSet结果集

excute(sql);

try {

return pstm.executeQuery();

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

return null;

}

public String getFirstUnit(String sql){//根据sql语句返回结果集的第一行第一列单元格数据

excute(sql);

try {

String value;

ResultSet rs=pstm.executeQuery();

rs.next();

value=rs.getString(1);

rs.close();

return value;//返回第一个单元格数据

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

return null;

}

public ArrayList getFirstRow(String sql){//根据sql返回结果集的第一行所有数据。

excute(sql);

try {

ArrayList aList=new ArrayList();//新建一个arrayList对象。

ResultSet rs=pstm.executeQuery();

rs.next();//将指针指向结果集的第一行。

int columns=rs.getMetaData().getColumnCount();//获取该结果集的列数。

for(int i=1;i

aList.add(rs.getString(i));//将第一行的所有列都以String形式封装到Arraylist。

}

return aList;//返回封装好的arraylist.

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

return null;

}

}

public int getInt(String sql){//返回受影响的行数

excute(sql);

try {

returnpstm.executeUpdate();

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

return 0;

}

public void close(){//当最后退出程序时执行就行了,因为是单例模式,所以不用每次都关

try {

pstm.cancel();

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

try {

con.close();

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值