jndi 连接数据库

来源:互联网 发布:linux新建一个用户uid 编辑:程序博客网 时间:2024/04/30 20:25

 /**
 * CreateJNDI.java
 */
package jndi;

import java.util.Hashtable;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;

import com.mysql.jdbc.jdbc2.optional.MysqlConnectionPoolDataSource;
import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;

/**
 * 创建 JNDI 文件
 * @author black
 * @version 1.0
 * @CreateDate 2008-7-21上午11:24:58
 */
public class CreateJNDI {

 /**
  * @param args
  */
 public static void main(String[] args) {
  
//   普通的数据源
  /*
  MysqlDataSource mysqldatasource = new MysqlDataSource();
  
  mysqldatasource.setServerName("localhost");
  mysqldatasource.setPortNumber(3306);
  mysqldatasource.setURL("jdbc:mysql://localhost:3306/test");
  
  mysqldatasource.setDatabaseName("test");
  mysqldatasource.setUser("root");
  mysqldatasource.setPassword("root");
  
  
  Hashtable env = new Hashtable();
  env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.fscontext.RefFSContextFactory");
  
  try {
   Context context = new InitialContext(env);
   context.unbind("jndi/mysql");
   context.bind("jndi/mysql", mysqldatasource);
   context.close();
   System.out.println("ok");
  } catch (NamingException e) {
   e.printStackTrace();
  }
  */
  
//  mysql 的池连接数据源,专用于池连接
  MysqlConnectionPoolDataSource mysqlcpds = new MysqlConnectionPoolDataSource();
  mysqlcpds.setServerName("localhost");
  mysqlcpds.setPortNumber(3306);
  mysqlcpds.setURL("jdbc:mysql://localhost:3306/test");
  mysqlcpds.setDatabaseName("test");
  mysqlcpds.setUser("root");
  mysqlcpds.setPassword("root");
  
  Hashtable env = new Hashtable();
  env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.fscontext.RefFSContextFactory");

//  初始化一个JNDI环境对象
  try {
   Context context = new InitialContext(env);
   
   context.unbind("jndi/mysqlpool");
   context.bind("jndi/mysqlpool", mysqlcpds);
   context.close();
   System.out.println("ok");
  } catch (NamingException e) {
   e.printStackTrace();
  }
  
 }

}

----------------------------------------------------------------

/**
 * UseJNDI_mysqlConnectionpoolDataSource.java
 */
package jndi;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Hashtable;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;

import com.mysql.jdbc.jdbc2.optional.MysqlConnectionPoolDataSource;

 

/**
 * @author black
 * @version 1.0
 * @CreateDate 2008-7-21下午12:10:29
 */
public class UseJNDI_mysqlConnectionpoolDataSource {

 /**
  * @param args
  */
 public static void main(String[] args) {
  Hashtable env = new Hashtable();
  
  env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.fscontext.RefFSContextFactory");
  
  try {
   Context context = new InitialContext(env);
   MysqlConnectionPoolDataSource connpool = (MysqlConnectionPoolDataSource) context.lookup("jndi/mysqlpool");
   
   Connection conn = connpool.getConnection();
   
   Statement stmt = conn.createStatement();
   
   ResultSet rs = stmt.executeQuery("select * from user_login");
   
   ResultSetMetaData metaData = rs.getMetaData();
   
   int count = metaData.getColumnCount();
   for(int i=1;i<= count; i++) {
    System.out.print(metaData.getColumnName(i) + "    ");
   }
   System.out.println();
   while( rs.next() ) {
    for(int i=1;i<=count; i++) {
     System.out.print( rs.getString(i) +"    ");
    }
    System.out.println();
   }
  } catch (NamingException e) {
   e.printStackTrace();
  } catch (SQLException e) {
   e.printStackTrace();
  }
 }

}

-------------------------------------------------------------------------------

/**
 * UseJNDI_MysqlDataSource.java
 */
package jndi;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Hashtable;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;

/**
 * jndi connect mysql Test
 * @author black
 * @version 1.0
 * @CreateDate 2008-7-21上午11:23:39
 */
public class UseJNDI_MysqlDataSource {

 /**
  * @param args
  */
 public static void main(String[] args) {
  Hashtable env = new Hashtable();
  env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.fscontext.RefFSContextFactory");
  
  Connection conn = null;
  
  try {
   Context context = new InitialContext(env);
   DataSource datasource = (DataSource)context.lookup("jndi/mysql");
   
   conn = datasource.getConnection();
   Statement stmt = conn.createStatement();
   ResultSet rs = stmt.executeQuery("select * from user_login");
   
   ResultSetMetaData metaData = rs.getMetaData();
   
   int count = metaData.getColumnCount();
   for(int i=1;i<= count; i++) {
    System.out.print( metaData.getColumnName(i) + "   ");
   }
   
   System.out.println();
   
   while(rs.next()) {
    for(int i=1;i<= count; i++) {
     System.out.print(rs.getString(i) + "    ");
    }
    System.out.println();
   }
  } catch (NamingException e) {
   e.printStackTrace();
  } catch (SQLException e) {
   e.printStackTrace();
  }
  
 }

}

 

原创粉丝点击