📄 databasebean.java
字号:
package jdbcbook.pub.db;
import java.sql.*;
import javax.naming.*;
import javax.sql.*;
/**
* 数据库相关的操作
*/
public class DatabaseBean
{
public static synchronized Connection getDSConnection( String user, String password ) throws SQLException
{
try
{
Context initCtx = new InitialContext();
Context envCtx = (Context)initCtx.lookup( "java:comp/env" );
DataSource ds = (DataSource)envCtx.lookup( "jdbc/jdbcbook" );
return ds.getConnection( user, password );
}
catch( NamingException ex )
{
ex.printStackTrace( System.err );
return null;
}
}
public static synchronized Connection getConnection( String jndiname ) throws SQLException
{
try
{
Context initCtx = new InitialContext();
Context envCtx = (Context)initCtx.lookup( "java:comp/env" );
DataSource ds = (DataSource)envCtx.lookup( jndiname );
return ds.getConnection( );
}
catch( NamingException ex )
{
ex.printStackTrace( System.err );
return null;
}
}
public static Connection getConnection( String user, String password ) throws SQLException
{
// 定义驱动程序
String DBDRIVER = "oracle.jdbc.driver.OracleDriver";
// // 定义连接字符串
String CONNSTR = "jdbc:oracle:oci8:" + user + "/" + password + "@test";
try
{
Class.forName( DBDRIVER );
}
catch ( ClassNotFoundException ex )
{
ex.printStackTrace( System.err );
}
return DriverManager.getConnection( CONNSTR );
}
// 取得某个表中可用的主键值
public static synchronized int getMaxID( Connection conn, String tablename )
throws SQLException
{
int nMaxID = 0;
Statement st = conn.createStatement();
// 增加同步,避免同时由多个进程执行
String sql = "SELECT maxid FROM tableseq WHERE tablename = '" + tablename + "'";
ResultSet rs = st.executeQuery( sql );
while( rs.next() )
{
nMaxID = rs.getInt( 1 );
}
rs.close();
if( nMaxID > 0 )
{
// 存在该表的记录
nMaxID++;
sql = "UPDATE tableseq SET maxid=" + nMaxID + " WHERE tablename = '"
+ tablename + "'";
}
else
{
// 不存在该表的记录
nMaxID = 1; // 从1开始
sql = "INSERT INTO tableseq ( tablename, maxid ) "
+ "VALUES ( '" + tablename + "'," + nMaxID + ")";
}
st.executeUpdate( sql );
st.close();
return nMaxID;
}
// 关闭连接,释放资源
public static void close( ResultSet rs, Statement st, Connection conn )
{
try
{
if( rs!=null ) rs.close();
}
catch( SQLException ex ) { };
try
{
if( st!=null ) st.close();
}
catch( SQLException ex ) { };
try
{
if( conn!=null ) conn.close();
}
catch( SQLException ex ) { };
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -