/////////////////////////////////////////////////
小弟初学jsp,第一个程序遇到了问题,请大虾给与指点
/////////////////////////////////////////////////
bean: classes\dbfile\connDB.class
connDB.java 原代码如下:
//////////////////////////////////////////
package dbfile;import java.sql.*;public class connDB{ private static Connection conn;

private static Statement stmt;

private static ResultSet rs;
//定义数据库驱动
private static final String drivername="com.microsoft.jdbc.sqlserver.SQLServerDriver";
//定义连接数据库的信息
private static final String url="jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=mydata;user=myuser;password=mypwd";

public static synchronized Connection getConn() throws Exception{
try{
Class.forName(drivername);
conn=DriverManager.getConnection(url);
return conn;
}catch(SQLException e){
System.err.println(e.getMessage());
throw e;
}
}
//将Statement设置成可滚动的
public Statement getStmtread(){
try{
conn=getConn();
stmt=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
return stmt;
}catch(Exception e){
System.err.println(e.getMessage());
                        e.printStackTrace();
}
return null;
}
//执行查询操作,返回可滚动的数据库的结果集
public ResultSet getRs(String sql){
try{
stmt=getStmtread();
rs=stmt.executeQuery(sql);
return rs;
}catch(Exception e){
System.err.println(e.getMessage());
e.printStackTrace();
}
return null;
}
//关闭资源
public void close(){
try{
if(rs!=null){
rs.close();
rs=null;
                        }
}catch(Exception e){
System.err.println(e.getMessage());
e.printStackTrace();
}
try{
if(stmt!=null){
stmt.close();
stmt=null;
                        }
}catch(Exception e){
System.err.println(e.getMessage());
e.printStackTrace();
}
try{
if(conn!=null){
conn.close();
conn=null;
                        }
}catch(Exception e){
System.err.println(e.getMessage());
e.printStackTrace();
}
}
}
//////////////////////////////////////
测试文件testDB.jsp:
//////////////////////////////////////
<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="" %><jsp:useBean class="dbfile.connDB" id="conn" scope="page"/><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>测试数据库连接</title>
</head><body>
<%
ResultSet rst;
String str_SQL="select * from admin";
 try{
           rst=conn.getRs(str_SQL);
   while(rst.next()){
                     out.println("<div style='color:#ff3300;font-size:12px'>"+rst.getString("a_Name")+"</div>");   
                     out.println("<div style='color:#ff3300;font-size:12px'>"+rst.getString("a_Password")+"</div>");  
           }
     }catch(Exception e){
     conn.close();
           System.err.println(e.getMessage());
           e.printStackTrace();
     }finally{
  conn.close();
 }
%>
</body>
</html>
/////////////////////////////////////////
测试sqlserver2000 tomcat5.0
/////////////////////////////////////////
存在问题:无错误输出,也无任何数据输出!!
请给与指点,谢谢!
/////////////////////////////////////////

解决方案 »

  1.   

    interpb(曾曾胡) 你好,我没有看懂你的回答,不用jsp是什么意思?谢谢
      

  2.   

    没有错误看不出
    建议你可以自己试一下,在你的Bean里面的连接的地方打印一些信息
    例如在conn=getConn();处打印System.out.println("success");
    还可在jsp文件中也给我打印一些信息,这样,不就可以知道什么原因了
      

  3.   

    给你一个能连接sqlserver的例子。将jdbc的驱动程序放到服务器的类路径里,然后要在数据库里建一个表test,有两个字段比如为test1,test2,可以用下面的SQL语句建 
    create table test(test1 varchar(20),test2 varchar(20)) 
    然后向这个表写入一条测试纪录。用于测试的jsp文件如下:(test.jsp)
    <%@ page contentType="text/html;charset=gb2312"%>   
    <%@ page import="java.sql.*"%> 
    <html>   
    <body>   
    <%Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();   
    String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=pubs"; 
    //pubs为你的数据库的 
    String user="sa"; 
    String password=""; 
    Connection conn= DriverManager.getConnection(url,user,password);   
    Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);   
    String sql="select * from test";   
    ResultSet rs=stmt.executeQuery(sql);   
    while(rs.next()) {%>   
    您的第一个字段内容为:<%=rs.getString(1)%>   
    您的第二个字段内容为:<%=rs.getString(2)%>   
    <%}%>   
    <%out.print("数据库操作成功,恭喜你");%>   
    <%rs.close();   
    stmt.close();   
    conn.close();   
    %>   
    </body>   
    </html> 
      

  4.   

    谢谢 huataixiang19810225(无名),用了你的方法 测试 briarc(拥有六分仪的航海士)给的例子,应该是Class.forName 异常,请问怎么解决??
      

  5.   

    我在 WEB-INF\lib 下面放了MSJDBC 的那三个文件了,但还是提示:[Microsoft][SQLServer 2000 Driver for JDBC]Error establishing socket.
      

  6.   

    问题解决了,谢谢大家!
    原因:SQLServer 2000 没打sp3包!