<%@ page contentType="text/html; charset=GBK" %>
<html>
<head>
<title>connect the db</title>
</head><%@ page import="java.sql.*"%><body bgcolor="#ffffff"><%
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
String url="jdbc:odbc:JSPuser"; // message_DSN 为你的用户数据源名称;
String user="";
String password=""; // 用户名和密码在此都设为空;
String name;
String pwd;
String c;
name=request.getParameter("name");
pwd=request.getParameter("pwd");
Connection conn= DriverManager.getConnection(url,user,password);
Statement stmt=conn.createStatement();
String sql="select * from TBuser where name='"+name+"';";
String pd="select * from TBuser where password='"+pwd+"';";
ResultSet rs1=stmt.executeQuery(pd);
ResultSet rs=stmt.executeQuery(sql);
%>
<%
if ((rs1.getString(2)).equals(rs.getString(2)))
out.println("OK");
else
out.println("Error");
%><%rs.close();
rs1.close();
stmt.close();
conn.close();
%></body>
</html>
以上是JSP代码
问题是出现了
javax.servlet.ServletException: ResultSet is closed
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:825)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:758)
org.apache.jsp.JSPco_jsp._jspService(JSPco_jsp.java:143)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
root cause java.sql.SQLException: ResultSet is closed
sun.jdbc.odbc.JdbcOdbcResultSet.checkOpen(JdbcOdbcResultSet.java:6647)
sun.jdbc.odbc.JdbcOdbcResultSet.getString(JdbcOdbcResultSet.java:256)
org.apache.jsp.JSPco_jsp._jspService(JSPco_jsp.java:84)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)高手帮帮 怎么改
<html>
<head>
<title>connect the db</title>
</head><%@ page import="java.sql.*"%><body bgcolor="#ffffff"><%
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
String url="jdbc:odbc:JSPuser"; // message_DSN 为你的用户数据源名称;
String user="";
String password=""; // 用户名和密码在此都设为空;
String name;
String pwd;
String c;
name=request.getParameter("name");
pwd=request.getParameter("pwd");
Connection conn= DriverManager.getConnection(url,user,password);
Statement stmt=conn.createStatement();
String sql="select * from TBuser where name='"+name+"';";
String pd="select * from TBuser where password='"+pwd+"';";
ResultSet rs1=stmt.executeQuery(pd);
ResultSet rs=stmt.executeQuery(sql);
%>
<%
if ((rs1.getString(2)).equals(rs.getString(2)))
out.println("OK");
else
out.println("Error");
%><%rs.close();
rs1.close();
stmt.close();
conn.close();
%></body>
</html>
以上是JSP代码
问题是出现了
javax.servlet.ServletException: ResultSet is closed
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:825)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:758)
org.apache.jsp.JSPco_jsp._jspService(JSPco_jsp.java:143)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
root cause java.sql.SQLException: ResultSet is closed
sun.jdbc.odbc.JdbcOdbcResultSet.checkOpen(JdbcOdbcResultSet.java:6647)
sun.jdbc.odbc.JdbcOdbcResultSet.getString(JdbcOdbcResultSet.java:256)
org.apache.jsp.JSPco_jsp._jspService(JSPco_jsp.java:84)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)高手帮帮 怎么改
解决方案 »
- 如何根据对象里面的的某1个字段对List排序
- Java JDBC连数据库用命令提示符编译怎么加载.jar文件
- ORM 是什么?用在什么场合。。。
- Java中是否有类似Windows的消息映射机制?
- java 中 byte[]-->String-->byte[] 怎么转?
- 如何写日志文件
- 想让一个java程序在一台机器上只能执行一个,该怎么办?
- 初级问题!
- 初学java请各位指点!!关于访问权限的问题?
- Session:如何跨web application使用session?或者解决方案?
- 下面网站中图片所示的multiView功能在Java中如何实现,请给些提示???
- 初学swing,想做个类似GoogleTalk的登录界面,不知道怎么布局
Statement stmt1=conn.createStatement(); //这多生成一个Statement对象
String sql="select * from TBuser where name='"+name+"';";
String pd="select * from TBuser where password='"+pwd+"';";
ResultSet rs1=stmt.executeQuery(pd); //以下2句分别用不同的Statement对象执行
ResultSet rs=stmt.executeQuery(sql);
ResultSet rs=stmt.executeQuery(sql);
<html>
<head>
<title>connect the db</title>
</head><%@ page import="java.sql.*"%><body bgcolor="#ffffff"><%
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
String url="jdbc:odbc:JSPuser"; // message_DSN 为你的用户数据源名称;
String user="";
String password=""; // 用户名和密码在此都设为空;
String name;
String pwd;
String c;
name=request.getParameter("name");
pwd=request.getParameter("pwd");
Connection conn= DriverManager.getConnection(url,user,password);
Statement stmt=conn.createStatement();
String sql="select * from TBuser where name='"+name+"';";
Statement stmt1=conn.createStatement();
String pd="select * from TBuser where password='"+pwd+"';";
ResultSet rs1=stmt.executeQuery(pd);
ResultSet rs=stmt1.executeQuery(sql);
%>
<%
if ((rs1.getString(2)).equals(rs.getString(2)))
out.println("OK");
else
out.println("Error");
%><%rs.close();
rs1.close();
stmt.close();
stmt1.close();
conn.close();
%></body>
</html>
改后结果:
javax.servlet.ServletException: [Microsoft][ODBC SQL Server Driver]连接占线导致另一个 hstmt
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:825)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:758)
org.apache.jsp.JSPco_jsp._jspService(JSPco_jsp.java:98)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
root cause java.sql.SQLException: [Microsoft][ODBC SQL Server Driver]连接占线导致另一个 hstmt
sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6958)
sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7115)
sun.jdbc.odbc.JdbcOdbc.SQLExecDirect(JdbcOdbc.java:3111)
sun.jdbc.odbc.JdbcOdbcStatement.execute(JdbcOdbcStatement.java:338)
sun.jdbc.odbc.JdbcOdbcStatement.executeQuery(JdbcOdbcStatement.java:253)
org.apache.jsp.JSPco_jsp._jspService(JSPco_jsp.java:70)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
String pd="select * from TBuser where password='"+pwd+"';";
ResultSet rs1=stmt.executeQuery(pd);
if(rs1.next()){
String spassword=rs1.getString(2);
ResultSet rs=stmt.executeQuery(sql);
if(rs.next()){
String sname=rs.getString(2);
if (spassword.equals(sname))
out.println("OK");
else
out.println("Error");
%><%rs.close();
rs1.close();
<html>
<head>
<title>connect the db</title>
</head><%@ page import="java.sql.*"%><body bgcolor="#ffffff"><%
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
String url="jdbc:odbc:JSPuser"; // message_DSN 为你的用户数据源名称;
String user="";
String password=""; // 用户名和密码在此都设为空;
String name;
String pwd;
String c;
name=request.getParameter("name");
pwd=request.getParameter("pwd");
Connection conn= DriverManager.getConnection(url,user,password);
Statement stmt=conn.createStatement();String sql="select * from TBuser where name='"+name+"';";
Statement stmt1=conn.createStatement();
String pd="select * from TBuser where password='"+pwd+"';";
ResultSet rs1=stmt.executeQuery(pd);
ResultSet rs=stmt1.executeQuery(sql);
Sting s1 = null;
String s2 = null;
while(rs.next())
s1 = rs.getString(2) ;
while(rs1.next())
s2 = rs1.getString(2);if (s1!=null && s2!=null&&s1.equals(s2))
out.println("OK");
else
out.println("Error");
%><%rs.close();
rs1.close();
stmt.close();
stmt1.close();
conn.close();
%></body>
</html>
还是出现了“连接战线”的问题
我想问一下 我数据库似乎没什么问题
应为我只是不用if..else...的时候就可以正常使用请朋友再帮助一下 谢谢了
Statement stmt1=conn.createStatement(); //这多生成一个Statement对象
String sql="select * from TBuser where name='"+name+"';";
String pd="select * from TBuser where password='"+pwd+"';";
ResultSet rs1=stmt1.executeQuery(pd); //以下2句分别用不同的Statement对象执行
String result1 = rs1.getString(2);
ResultSet rs=stmt.executeQuery(sql);
String result = rs.getString(2);
if (result1.equals(result)){
out.println("OK");
}else{
out.println("Error");
}
再试试~
public void close(ResultSet result) { if (result != null) {
try {
result.close();
}
catch (SQLException se) {
result = null;
}
finally {
result = null;
}
}
}
[Microsoft][ODBC 驱动程序管理器] 无效的游标状态kevinliuu(@。@) 朋友的代码
在判断Error时没有问题
但是在输入用户名和密码都正确是出现了战线的问题 不知道谁能改一下
Statement stmt1=conn.createStatement(); //这多生成一个Statement对象
String sql="select * from TBuser where name='"+name+"';";
String pd="select * from TBuser where password='"+pwd+"';";
ResultSet rs1=stmt1.executeQuery(pd); //以下2句分别用不同的Statement对象执行
if(rs1.next()){
String result1 = rs1.getString(2);
}
ResultSet rs=stmt.executeQuery(sql);
if(rs.next()){
String result = rs.getString(2);
}
if (result1.equals(result)){
out.println("OK");
}else{
out.println("Error");
}
再试
符号: 变量 result
位置: 类 org.apache.jsp.JSPco_jsp
if (result1.equals(result)){
^
An error occurred at line: 12 in the jsp file: /JSPco.jsp
Generated servlet error:
D:\计算机安装\Tomcat 5.0\work\Catalina\localhost\JSPDL\org\apache\jsp\JSPco_jsp.java:98: 找不到符号
符号: 变量 result1
位置: 类 org.apache.jsp.JSPco_jsp
if (result1.equals(result)){
^
2 错误
所以我在前面声明了String result=null;
String result1=null;
但是又出现了问题org.apache.jasper.JasperException
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:372)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
root cause java.lang.NullPointerException
org.apache.jsp.JSPco_jsp._jspService(JSPco_jsp.java:100)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
<html>
<head>
<title>connect the db</title>
</head><%@ page import="java.sql.*"%><body bgcolor="#ffffff"><%
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
String url="jdbc:odbc:JSPuser";
String user="";
String password="";
String name;
String pwd;
String c;
name=request.getParameter("name");
pwd=request.getParameter("pwd");
Connection conn= DriverManager.getConnection(url,user,password);
Statement stmt=conn.createStatement();
Statement stmt1=conn.createStatement();
String sql="select * from TBuser where name='"+name+"';";
String pd="select * from TBuser where password='"+pwd+"';";
String result=null;
String result1=null;
ResultSet rs1=stmt1.executeQuery(pd);
ResultSet rs=stmt.executeQuery(sql);
while(rs1.next())
{
result1 = rs1.getString(2);
}
while(rs.next())
{
result = rs.getString(2);
}
if (result1.equals(result))
{
out.println("OK");
}
else
{
out.println("Error");
}
rs.close();
rs1.close();
stmt.close();
stmt1.close();
conn.close();
}
catch(Exception ex)
{
out.println(ex.getMessage());
}
%></body>
</html>但是仍然出现了如下提示:[Microsoft][ODBC SQL Server Driver]连接占线导致另一个 hstmt我自己都不明白怎么弄了,但有的朋友说两个连接用两个线程,不知道对不对,反正目前我也感觉很老火,多谢各位了。
Statement stmt=conn.createStatement();
Statement stmt1=conn.createStatement(); //这多生成一个Statement对象
String sql="select * from TBuser where name='"+name+"';";
String pd="select * from TBuser where password='"+pwd+"';";
String result1 = "";
String result = "";
ResultSet rs1=stmt1.executeQuery(pd); //1
if(rs1.next()){ //2
result1 = rs1.getString(2); //3
} //4
ResultSet rs=stmt.executeQuery(sql); //5
if(rs.next()){ //6
result = rs.getString(2); //7
}没发现那7行和你的有什么不同么? 是先做完一个取值 然后再取下一个 那样应该就不会占线了
似乎只有while 改成了 if 啊
我是取1个ResultSet 取值 再取第2个ResultSet 取值
还没明白?