学习DatabaseConnectionPool--数据库连接池(随记三)

 
        连接池建立起来后的应用就相对简单多了,不过事情往往不是都很顺利的,一套完整的应用是需要所有细节的链子完整的连接起来,这中间需要进行一些琐碎的工作。

       我使用的数据库是 ms sql server,配置需要花费一些手脚。

        1.下载sql server的驱动,有3个文件:msbase.jar、mssqlserver.jar、msutil.jar。具体只要上网一搜,就知道哪里下载了。下载完毕后将这个文件放到tomcat的/common/lib里面,或者是放在网站文件夹的web-inf/lib里面。如果你以后是使用别人的空间,那就最好放在自己的网站文件夹中。

        2.将连接池java编译文件的DBConnectionManager.class文件放在web-inf/classes/database/目录下,同时需要记得修改连接数据库的属性文件db.properties,前缀都是连接池的名字。

        3.下面是一个连接池的应用测试页面。


<% @ page contentType = " text/html; charset=GBK "   %>
<% @ page  import = " java.sql.*,
                 java.util. * ,
                 database.DBConnectionManager,
                 metro.common.
* "  
%>
< html >
< head >
< meta http - equiv = " Content-Type "  content = " text/html; charset=GBK " >
< title > MS SQL Server 连接测试 </ title >
</ head >

< body >
<%
    DBConnectionManager connMgr ;
    ResultSet rs 
=   null  ;
    Statement stmt 
=   null  ;

        connMgr 
=  DBConnectionManager.getInstance();
        Connection con 
=  connMgr .getConnection( " sqlpool " );
        
if  ( con  ==   null  )
        
{
            out.print(
"不能获取数据库连接");
            
return ;
        }

        
        String sql 
=   "  select * from products  "  ;
        stmt 
=  con.createStatement();        
        rs 
=  stmt.executeQuery(sql);
        out.print(
" 产品数据: " ) ;
        
while  ( rs.next() )
        
{
            out.print(
"<table>") ;
            out.print(
"<tr>") ;
            out.print(
"<td>"+ rs.getInt(1+"</d>") ;        
            out.print(
"<td>"+ rs.getString(2+"</d>") ;                    
            out.print(
"</tr>") ;            
            out.print(
"</table>") ;
        }



%>


</ body >
</ html >

        4.这里需要认识一个方法,就是凡是.class文件都是放在classes文件夹下,凡是jar、servlet文件都是放在lib文件夹下,莫搞混了


        5.这里顺便学习java的一个很重要的关键字synchronized

        (一)、当两个并发线程访问同一个对象object中的这个synchronized(this)同步代码块时,一个时间内只能有一个线程得到执行。另一个线程必须等待当前线程执行完这个代码块以后才能执行该代码块。

        (二)、然而,当一个线程访问object的一个synchronized(this)同步代码块时,另一个线程仍然可以访问该object中的非synchronized(this)同步代码块。

        (三)、尤其关键的是,当一个线程访问object的一个synchronized(this)同步代码块时,其他线程对object中所有其它synchronized(this)同步代码块的访问将被阻塞。

        网上可以搜到学多对这个关键字的认识,注意别乱点广告




你可能感兴趣的:(sql,数据库,server,object,servlet,数据库连接池,null)