![](/img/trans.png)
[英]Oracle database connectivity issue in java using ojdbc14 driver
[英]OJDBC code issue in Java Eclipse
我已經制作了一個注冊表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
錯誤java.sql.SQLException: Closed Statement: next
表格如下:
FNAME LNAME ADDR MAIL OCCU UNAME PASSWD aaa aaa aaaa aaa aaaa bbb cccc bkgkb jjv jhvjmh jjkg jvjv jvjvh bjbmb
請幫我解決這個問題!
首先,無需使用
con.commit();
如果將AutoCommit設置為false,則只能使用這種情況。
con.setAutoCommit(false);
其次,我建議您使用更快,更安全的PreparedStatements
。
接下來,無需關閉您的對帳單。
在finally塊中,關閉連接時必須調用con.close()
,語句將自動關閉。
注意:您必須在finally塊中調用它,因為您的Application
可能崩潰,然后您的Connection
永遠不會關閉。
finally {
if (con != null) {
con.close();
}
}
嘗試刪除con.commit
行,無需這樣做。
您應該finally
添加到catch
並在此處關閉語句。
並且您還應該使用PreparedStatement而不是Statement。
關於finally
看到這里了 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.