写了一个测试页,读取访问者的IP,然后到指数的sql server数据库服务器上查询此IP是否有权限访问。
但是显示的结果是"没有查找到该用户的ip.",应该是没有连上数据库。但是不知道问题在哪儿??注:1、数据库相关的信息(地址,帐号、库名等)都是正常的。
2、访问者的IP在数据库里肯定存在。
3、在服务器上建立了系统DSN,测试数据源是成功的。
test.jsp代码如下:<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.sql.*"%>
<html>
 <body>
   <%!
   String DBDriver     = "com.microsoft.jdbc.sqlserver.SQLServerDriver" ;
 String DBurl="jdbc:microsoft:sqlserver://192.168.3.2:1433;DatabaseName=DLBR" ;
   String DBUser          = "cas" ;
   String DBPassWord      = "123321";
   Connection conn        = null ;
   PreparedStatement pstmt = null ;
   ResultSet rs    = null ;
   String strEnable=null;
%>
<%
   boolean flag = false ;
   String UserIp=request.getRemoteAddr();
%>
<%
   String sql = "SELECT ENABLE FROM USER WHERE IPADDR=?";
   try
   {
    Class.forName(DBDriver) ;
    conn = DriverManager.getConnection(DBurl,DBUser,DBPassWord) ;
    pstmt = conn.prepareStatement(sql) ;
    pstmt.setString(1,UserIp) ;
    rs = pstmt.executeQuery() ;
    if(rs.next())
    {
     strEnable=rs.getString(1);
     flag = true ;
    }
    if(rs!=null)try{rs.close();}catch(Exception e){System.out.println("关闭结果集存在异常");} ;
    if(pstmt!=null)try{pstmt.close();}catch(Exception e){System.out.println("关闭PreparedStatement存在异常");} ;
    if(conn!=null)try{conn.close();}catch(Exception e){System.out.println("关闭连接存在异常");} ;
   }
   catch(Exception e)
   {System.out.println("建立连接存在异常");}
%>
<%
   if(flag)
   {
%>
    该用户的情况:<%=strEnable%>
<%
   }
   else
   {
%>
   没有查到该用户的ip.
    获取的IP地址为:<%=UserIp%>
<%
   }
%>
</center>
</body>
</html> 

解决方案 »

  1.   

    如果是没有连上数据库的话应该报异常信息才对。flag 为false的话,就是rs.next()返回的是false。
    既然数据库有数据那么你的查询语句 或者传进去的参数UserIp对吗。
    debug一下看一下你的生成sql语句,并把它放到数据库里运行一下看看就知道了。
      

  2.   

    回1楼:显示的  “没有查到该用户的ip. ”   但此IP在数据库里是有的。回2楼:但是这个IP在数据库里是有的,我把sql语句放在在查询分析器里是能查到的。
      

  3.   

    数据库连接是正确的,不然会报异常。应该是你的查询结果为空,没有找到相应的数据。打印下传入的参数userid和你的查询语句。把打印出来的sql语句和参数userid在数据库中执行查询看能不能查出数据来。
      

  4.   

    你的数据驱动有没有放进相应的文件(lib)中啊
      

  5.   

    把获取到的ip打印出来,是正确的。
    sql语句放到查询分析器里,也是正确的。
    可是访问这个页面以后,就是显示找不到。
    真邪门!
    你的数据驱动有没有放进相应的文件(lib)中啊
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~``````  ???  具体应该怎么做?
    也许是这里的问题,问一下。是这样的,有一个JSP的网站,我是把这个页放到了这个网站的文件夹里的。这样是不是会有影响?  这个网站是用IIS+RESIN发布的,这个网站本身是用的本地的ORACLE数据库。
      

  6.   

    1,写了一个测试页,读取访问者的IP,然后到指数的sql server数据库服务器上查询此IP是否有权限访问。
    但是显示的结果是"没有查找到该用户的ip.",应该是没有连上数据库。但是不知道问题在哪儿??
    --------------------------------------------------
    2,把获取到的ip打印出来,是正确的。sql语句放到查询分析器里,也是正确的。可是访问这个页面以后,就是显示找不到。
    *****************************************************
    以上都是楼主说的。这还真有点儿邪门儿,并且到现在也没看到你贴出的异常信息
    这样吧,jsp也不好调试,你最好把这个请求写到一个Servlet里,也好调试,看看到底是哪儿出的异常。
    哎,刚才还有点儿想法儿呢,一下子又忘了,你还是先调试看看吧...相信到了类里,一切就问题就清晰了。
      

  7.   

    首先,我的IP在数据库里是存在的,我去查询分析器里查,也是是正常的。
    再有,我让页面上显示出获取到的IP,也是正确的。我试着把数据库的地址和帐号都故意改成错的,页面显示的还是“没有查到该用户的ip. ”所以我想,应该还是数据库没有连接上。不知道是怎么回事 :(
      

  8.   

    是不是那台sql server服务器应该装什么或是配置什么?
    数据库的版本是sql server 2000 sp3
      

  9.   

    会不会是TCP协议的端口没有设置好啊
      

  10.   

    是指1433么?
    netstat -an 没问题啊