package com.jb.logon;import java.sql.*;
//连接sql数据库的方法
public class JDBConnection1 {
    private final String dbDriver =
            "com.microsoft.jdbc.sqlserver.SQLServerDriver"; 
    private final String url =
            "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=db2";
    private final String userName = "sa";
    private final String password = "85422107";
    private Connection con = null;    public JDBConnection1() {
        try {
            Class.forName(dbDriver).newInstance(); //加载数据库驱动
        } catch (Exception ex) {
            System.out.println("数据库加载失败");
        }
    }//创建数据库连接
    public boolean creatConnection() {
        try {
            con = DriverManager.getConnection(url, userName, password);
            con.setAutoCommit(true);        } catch (SQLException e) {
            System.out.println(e.getMessage());
            System.out.println("creatConnectionError!");
        }
        return true;
    }//对数据库的增加、修改和删除的操作
    public boolean executeUpdate(String sql) {        if (con == null) {
            creatConnection();
        }
        try {
            Statement stmt = con.createStatement();
            int iCount = stmt.executeUpdate(sql);
            System.out.println("操作成功,所影响的记录数为" + String.valueOf(iCount));
              return true;
        } catch (SQLException e) {
            System.out.println(e.getMessage());
            System.out.println("executeUpdaterError!");
                return false;
        }    }
//对数据库进行修改操作
 public boolean executeUpdate1(String sql) {        if (con == null) {
            creatConnection();
        }
        try {
            Statement stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
            int iCount = stmt.executeUpdate(sql);
            System.out.println("操作成功,所影响的记录数为" + String.valueOf(iCount));
              return true;
        } catch (SQLException e) {
            System.out.println(e.getMessage());
            System.out.println("executeUpdaterError!");
                return false;
        }    }//对数据库的查询操作
    public ResultSet executeQuery(String sql) {
        ResultSet rs;
        try {
            if (con == null) {
                creatConnection();
            }
            Statement stmt = con.createStatement();
            try {
                rs = stmt.executeQuery(sql);
            } catch (SQLException e) {
                System.out.println(e.getMessage());
                return null;
            }
        } catch (SQLException e) {
            System.out.println(e.getMessage());
            System.out.println("executeQueryError!");
            return null;
        }
        return rs;
    }//关闭数据库的操作
    public void closeConnection() {
        if (con != null) {
            try {
                con.close();
            } catch (SQLException e) {
                e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
                System.out.println("Failed to close connection!");
            } finally {
                con = null;
            }
        }
    }}
以上为数据库连接
<jsp:useBean id="connection1" scope="session" class="com.jb.logon.JDBConnection1"/>
在JSP页面进行调用,
<%
try{
String sql1="select top 8 a,b from t_table where qb='1' order by recordtm";
ResultSet rs2=connection1.executeQuery(sql1);
String a="";
while(rs2.next()){a=rs2.getString("a");
%>
            <tr align="center" valign="middle" height="22">
        <td align="left" width="430"><img src="sy_files/button_green.gif"><a href="showsjgg.jsp?a=<%=a%>"         target="_blank">&nbsp;&nbsp;<%=biaoti%></a>&nbsp;&nbsp;<<%=rs2.getDate("b") %>></td>                               
          </tr>
<% }} catch(Exception ex) {}%>  
<%connection1.closeConnection();%> 
间歇性报上面的socket write error异常,请大家帮忙看看,有什么想法大家可以交流下 谢谢

解决方案 »

  1.   

    1 <jsp:useBean   id="connection1"   scope="session"   class="com.jb.logon.JDBConnection1"/> 
    改成
    <jsp:useBean id="connection1" scope="request" class="com.jb.logon.JDBConnection1"/> 
    不要共享 Connection,以免引起多页面共同刷新引起冲突。2 建议修改的代码,不改也没大问题
    public class JDBConnection1 {
      private static final String dbDriver = "com.microsoft.jdbc.sqlserver.SQLServerDriver";
      private static final String url = "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=db2";
      private static final String userName = "sa";
      private static final String password = "85422107";
      
      private Connection con = null;
      static { // 初始化一次就够了
        try {
          Class.forName(dbDriver).newInstance(); // 加载数据库驱动
        } catch (Exception ex) {
          System.out.println("数据库加载失败");
        }
      }
      public JDBConnection1() {  }3 jsp 流程稍作修改<%
      try {
        String sql1 = "select   top   8   a,b   from   t_table   where   qb='1'   order   by   recordtm";
        ResultSet rs2 = connection1.executeQuery(sql1);
        String a = "";
        while (rs2.next()) {
          a = rs2.getString("a");
    %>
    <tr align="center" valign="middle" height="22">
      <td align="left" width="430"><img src="sy_files/button_green.gif"> <a href="showsjgg.jsp?a= <%=a%> "
        target="_blank"> &nbsp;&nbsp; <%=biaoti%> </a> &nbsp;&nbsp; < <%=rs2.getDate("b")%> ></td>
    </tr>
    <%
      }
      } catch (Exception ex) {
        ex.printStackTrace(); // 有异常还是输出来吧
      } finally { // 放在这里确保连接关闭
        connection1.closeConnection();
      }
    %>
      

  2.   

    IT资源网,Java/J2EE技术教程