tomcat+jdbc+sqlserver2008连接池

今天在自己WIN7电脑上好好的 html5+ajax+servlet 部署到另外一台WINDSERVER2008 居然无法访问操作数据库的servlet

晚上研究 连接池,看明天去换一下 连接池是否能解决。


先解决 tomcat+jdbc连接池再说


1    JAVA工程 web-inf/lib/  放入 sqljdbc4.jar    (可以访问 sqlserver2005和 2008)


2  在 webproject目录的 WebRoot/WETA-INF目录下

创建 context.xml文件, 如果有,就在 <context>下添加 <Resource >


<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xml>
<Context>
 <Resource name="jdbc/zcdb"
  auth="Container"
   type="javax.sql.DataSource"
    maxActive="100"
    maxIdle="30"  
         maxWait="10000" 
        username="sa"     
         password="1113"   
        driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver" 
         url="jdbc:sqlserver://localhost:1433; DatabaseName=AssentManage2"
      /> 
 
</Context> 

 


3  在 myeclipse中

新建一个工具类 ,在工具类中增加如下函数


 public  static Connection dbconnet()
 {
  
  Context ctx;
  try {
   ctx = new InitialContext();
   Context envctx = (Context) ctx.lookup("java:comp/env");  
         DataSource ds = (DataSource) envctx.lookup("jdbc/zcdb");  
         count=count+1;
        System.out.println("产生第"+count+"个连接");
        Connection conn=ds.getConnection();  
        return  conn;
  } catch (NamingException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
   return null;
  } catch (SQLException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
   return null;
  }  
       
   

 }


4  编写 客户端


 // 根据userid 查询自己的  设备
 public static  List<DevInfo> getMyDevinfo(int userid ) {

   Connection conn;
   java.sql.Statement stmt = null;
   java.sql.ResultSet rs = null;
   String sql ="select servername,currentposition, loginaccount,loginpassword from server_info where id in ( select ser_id from user_server where user_id="+userid +")";
         List<DevInfo> list1=new ArrayList<DevInfo>();
  
    try {
     System.out.println("根据userid获取服务器信息" + sql);
     conn = dbconnet();
     stmt = conn.createStatement();
      boolean ret = stmt.execute(sql);

     //rs = stmt.executeQuery(sql);
      if(ret){
          rs = stmt.getResultSet();
      while (rs.next()) {
      DevInfo tm=new DevInfo();
                      tm.setSbname(rs.getString("servername"));
                      tm.setSbpos(rs.getString("currentposition"));
                      tm.setSbaccount(rs.getString("loginaccount"));
                      tm.setSbpwd(rs.getString("loginpassword"));
                     list1.add(tm);
     }
     rs.close();
     stmt.close();
     conn.close();count=count-1; System.out.println("释放一个,还有"+count+"个");
     return list1;
      }
     
    } catch (SQLException e) {
     e.printStackTrace();
      return  null;
    }
    
    return null;
 }


----------------------------------------------------------------------3种数据库的 配置----------------------------

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xml>
<Context><!--
 <Resource name="jdbc/zcdb"
  auth="Container"
   type="javax.sql.DataSource"
    maxActive="100"
    maxIdle="30"  
         maxWait="10000" 
        username="sa"     
         password="1113"   
        driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver" 
         url="jdbc:sqlserver://localhost:1433; DatabaseName=AssentManage2"
      /> 
     
       -->
       <!--注意这里 useunicode=true&amp; 哦-->
       <Resource name="jdbc/mysqldb"
       auth="Container"
       type="javax.sql.DataSource"
        maxActive="100"
        maxIdle="30"  
         maxWait="10000" 
        username="root"     
         password="royasoft"   
        driverClassName="com.mysql.jdbc.Driver" 
         url="jdbc:mysql://localhost:3306/zms?useUnicode=true&amp;characterEncoding=utf8"
         
      /> 
 
 
 
      <Resource name="jdbc/Sqlitedb"
       auth="Container"
       type="javax.sql.DataSource"
        maxActive="100"
        maxIdle="30"  
         maxWait="10000" 
        driverClassName="org.sqlite.JDBC" 
         url="jdbc:sqlite://d:/journal.db"     //这里先用绝对路径, 如果是把数据库放到 src下面, 自动会发布到 web-inf/class目录下, 但是 报错找不到表,估计是路径的问题
          
      /> 
     
     
     
</Context>



你可能感兴趣的:(tomcat,连接池,jdbc)