gpt4 book ai didi

java - Java Eclipse 中的 OJDBC 代码问题

转载 作者:行者123 更新时间:2023-12-01 15:18:39 26 4
gpt4 key购买 nike

我制作了一个注册表 reg1 并存储了 HTML 文件中每个注册用户的值。现在我用 HTML 制作了一个登录页面,用户可以在其中提供他们的用户名并查看他们输入的数据。我创建了一个用户“bbb”并且只想显示他的用户名。所以我编写了如下的通用java代码:

    import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class Check extends HttpServlet {
private static final long serialVersionUID = 1L;

/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
String username=request.getParameter("username");
try{
Class.forName("oracle.jdbc.driver.OracleDriver");
String url="jdbc:oracle:thin:@localhost:1521:XE";
Connection con=DriverManager.getConnection(url,"system","root");
Statement stmt=con.createStatement();
ResultSet rs=stmt.executeQuery("select uname from reg1");


while(rs.next())
{

String name=rs.getString("uname");
if(name==username)
{


response.setContentType("text/html");
PrintWriter pw=response.getWriter();
pw.println("Your User name is:"+username);

// System.out.println(""+name);
}



con.commit();

}
stmt.close();
}


catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}


}

}

它给出了类似 java.sql.SQLException: Closed Statement: next

的错误

表格如下:

FNAME LNAME ADDR 邮件 OCCU UNAME PASSWD啊啊啊啊啊啊啊啊啊啊bbb ccccbkgkb jjv jhvjmh jjkg jvjv jvjvh bjbmb

请帮我解决这个问题!!

最佳答案

首先不需要使用

con.commit();

只有在将 AutoCommit 设置为 false 的情况下才可以使用它。

con.setAutoCommit(false);

其次,我建议您使用PreparedStatements,它更快、更安全。
接下来,无需关闭您的报表。

finally block 中,当你关闭连接时,你必须调用con.close(),语句将自动关闭。

注意:您必须在finally block 中调用它,因为您的Application可能会崩溃,然后您的Connection永远不会关闭。

finally {
if (con != null) {
con.close();
}
}

关于java - Java Eclipse 中的 OJDBC 代码问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11280643/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com