58,454
社区成员
发帖
与我相关
我的任务
分享
//写在静态块里面 初始化一次就可以了 节省资源
static
{
try
{
Class.forName(str_driver);
System.out.println(str_url);
}
catch (ClassNotFoundException ex)
{
System.out.println("Error load" + str_driver);
}
}
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class DBConnection
{
static private String str_driver = "oracle.jdbc.driver.OracleDriver";
static private String str_url = "jdbc:oracle:thin:@"+str_server+":1521:PZH";
static private String str_user = "admin";
static private String str_pwd = "cdut";
private Connection conn = null;
private Statement stmt = null;
private ResultSet rs = null;
private String sql = null;
//写在静态块里面 初始化一次就可以了 节省资源
static
{
try
{
Class.forName(str_driver);
System.out.println(str_url);
}
catch (ClassNotFoundException ex)
{
System.out.println("Error load" + str_driver);
}
}
public DBConnection()
{
}
//获得一个 连接对象
private Connection getConnection()
{
try
{
if (conn == null || conn.isClosed())
conn = DriverManager.getConnection(str_url, str_user, str_pwd);
}
catch (Exception ex)
{
ex.printStackTrace();
return null;
}
return conn;
}
//获得一个Statement对象
private Statement getStatement()
{
try
{
if (stmt == null)
stmt = getConnection().createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
// 1. ResultSet.TYPE_FORWARD_ONLY (略)
// 2. ResultSet.TYPE_SCROLL_INSENSITIVE 双向滚动,但不及时更新,就是如果数据库里的数据修改过,并不在ResultSet中反应出来。
// 3. ResultSet.TYPE_SCROLL_SENSITIVE 双向滚动,并及时跟踪数据库里的更新,以便更改ResultSet中的数据。
// 4. ResultSet.CONCUR_READ_ONLY 只读取ResultSet
// 5. ResultSet.CONCUR_UPDATABLE 用ResultSet更新数据库
}
catch (Exception ex)
{
ex.printStackTrace();
return null;
}
return stmt;
}
//可执行查询语句 返回一个结果集合
public ResultSet executeQuery(String sql)
{
try
{
rs = getStatement().executeQuery(sql);
}
catch (SQLException ex)
{
System.err.println("query error:" + ex.getMessage());
}
return rs;
}
//执行一系列的sql语句 执行成功 返回true 否则false 并且回滚
public boolean executeBatch(java.util.ArrayList sqls)
{
boolean bRet = false;
try
{
conn = getConnection();
conn.setAutoCommit(false);
stmt = conn.createStatement();
for (int i = 0; i < sqls.size(); i++)
{
String sql = (String) sqls.get(i);
stmt.addBatch(sql);
}
stmt.executeBatch();
conn.commit();
bRet = true;
}
catch (Exception ex)
{
try
{
conn.rollback();
}
catch (Exception ex2)
{
System.err.println("rollback failed:" + ex2.getMessage());
}
ex.printStackTrace();
}
finally
{
}
return bRet;
}
//执行插入 删除 更新 返回一个数值 (INSERT、UPDATE 或 DELETE 语句)
public int executeUpdate(String sql)
{
int resultNum = 0;
try
{
resultNum = getStatement().executeUpdate(sql);
}
catch (SQLException ex)
{
System.err.println("update error:" + ex.getMessage());
}
finally
{
}
return resultNum;
}
//关闭资源
public void close()
{
try
{
if (rs != null)
{
rs.close();
rs = null;
}
if (stmt != null)
{
stmt.close();
stmt = null;
}
if (conn != null)
{
conn.close();
conn = null;
}
}
catch (Exception ex)
{
System.err.println("close error:" + ex.getMessage());
}
}
/**
* 打开数据库连接
*/
public void OpenConn() throws Exception
{
try
{
Class.forName("oracle.jdbc.driver.OracleDriver");
// String url = "jdbc:oracle:thin:@172.19.40.117:1521:PIPEGIS";
conn = DriverManager.getConnection(str_url);
}
catch (Exception e)
{
System.err.println("OpenConn:" + e.getMessage());
}
}
/**
* 执行sql语句,返回结果集re
*/
public ResultSet executeQuery2(String sql)
{
stmt = null;
rs = null;
try
{
stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY);
rs = stmt.executeQuery(sql);
}
catch (SQLException e)
{
System.err.println("executeQuery:" + e.getMessage());
}
return rs;
}
/**
* 执行sql语句
*/
public void executeUpdate2(String sql)
{
stmt = null;
rs = null;
try
{
stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY);
stmt.executeQuery(sql);
}
catch (Exception e)
{
System.err.println("executeUpdate:" + e.getMessage());
}
}
/**
* 关闭数据库连接
*
*/
public void closeStmt()
{
try
{
conn.close();
}
catch (SQLException ex)
{
System.err.println("aq.closeConn:" + ex.getMessage());
}
}
/**
* 转换编码
*/
public static String toGBK(String str)
{
try
{
if (str == null)
{
str = "";
}
else
str = new String(str.getBytes("ISO-8859-1"), "GBK");
}
catch (Exception e)
{
System.out.println(e);
}
return str;
}
}