写了一个测试页,读取访问者的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>
但是显示的结果是"没有查找到该用户的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>
既然数据库有数据那么你的查询语句 或者传进去的参数UserIp对吗。
debug一下看一下你的生成sql语句,并把它放到数据库里运行一下看看就知道了。
sql语句放到查询分析器里,也是正确的。
可是访问这个页面以后,就是显示找不到。
真邪门!
你的数据驱动有没有放进相应的文件(lib)中啊
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~`````` ??? 具体应该怎么做?
也许是这里的问题,问一下。是这样的,有一个JSP的网站,我是把这个页放到了这个网站的文件夹里的。这样是不是会有影响? 这个网站是用IIS+RESIN发布的,这个网站本身是用的本地的ORACLE数据库。
但是显示的结果是"没有查找到该用户的ip.",应该是没有连上数据库。但是不知道问题在哪儿??
--------------------------------------------------
2,把获取到的ip打印出来,是正确的。sql语句放到查询分析器里,也是正确的。可是访问这个页面以后,就是显示找不到。
*****************************************************
以上都是楼主说的。这还真有点儿邪门儿,并且到现在也没看到你贴出的异常信息
这样吧,jsp也不好调试,你最好把这个请求写到一个Servlet里,也好调试,看看到底是哪儿出的异常。
哎,刚才还有点儿想法儿呢,一下子又忘了,你还是先调试看看吧...相信到了类里,一切就问题就清晰了。
再有,我让页面上显示出获取到的IP,也是正确的。我试着把数据库的地址和帐号都故意改成错的,页面显示的还是“没有查到该用户的ip. ”所以我想,应该还是数据库没有连接上。不知道是怎么回事 :(
数据库的版本是sql server 2000 sp3
netstat -an 没问题啊