⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 databasebean.java

📁 该代码是Java数据库高级编程宝典中的重要的代码
💻 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 + -