2014-03-19 36 views
1

我正在使用以下JSP代碼來更新數據庫。它顯示消息「更新成功」,但數據不會在數據庫中更新。使用JSP更新數據庫

<%@page import="java.sql.DriverManager"%> 
<%@page import="java.sql.PreparedStatement"%> 
<%@page import="java.sql.Connection"%> 
<%@page import="java.sql.CallableStatement"%> 

<% 
String ssiteid=request.getParameter("siteid"); 
String sowner=request.getParameter("owner"); 
String sstate=request.getParameter("state"); 
String sdate=request.getParameter("date"); 
String stariff=request.getParameter("tariff"); 
String sdiscom=request.getParameter("discom"); 

    Connection con=null; 

try { 
      Class.forName("com.mysql.jdbc.Driver"); 

      con= DriverManager.getConnection("jdbc:mysql://localhost > /s3n","root","system"); 
    PreparedStatement cstmt= con.prepareStatement("update windtariff_master set Owner=?,  State=?, Date=?, Tariff=?, Discom=? where Site_ID=?"); 

cstmt.setString(1,ssiteid); 
cstmt.setString(2,sowner); 
cstmt.setString(3,sstate); 
cstmt.setString(4,sdate); 
cstmt.setString(5,stariff); 
cstmt.setString(6,sdiscom); 
cstmt.executeUpdate(); 
out.println("updated successfully"); 
    } 
    catch(Exception e){ 
    out.print("try not allowed"+e); 
      } 


%> 
+1

「//本地主機>/S3N」 你這個 '>' 和/ S3N意思? – Divya

+0

「s3n」是OP連接到的數據庫的名稱。 – duffymo

+0

executeUpdate返回一個int,int的值是什麼? –

回答

0

我建議您將此代碼從scriptlet移出並轉換爲POJO。這樣測試會容易得多。測試它並放在一邊。

JSP中的Scriptlets是一個不好的方法。這是一種很久沒有信譽的風格。 Model-2 MVC是首選。如果你必須這樣做,我建議你學習JSTL並使用它的<sql>標籤。

在catch塊中打印出該消息,如果打印堆棧跟蹤信息,將獲得的信息會少得多。你可能會知道爲什麼會有這樣的問題。

在此代碼中沒有正確清理您的連接,語句或結果集對象。如果你能把它變成一次工作,你將無法解決問題。

你真的在給純文本的根密碼?天啊。

爲什麼要將Date作爲String存儲在數據庫中?如果您有Date

您不通過以這種方式獲取連接來利用連接池。即使Tomcat也會爲你組裝它們。你爲什麼不想要那個?

0

你做一些錯誤在你的程序,應該必須改變等爲下面的代碼:

con= DriverManager.getConnection("jdbc:mysql://localhost/s3n","root","system"); 
    PreparedStatement cstmt= con.prepareStatement 
("update windtariff_master set Owner=?, State=?, Date=?, Tariff=?, Discom=?" + 
    "where Site_ID=?"); 

cstmt.setString(1, sowner); 
cstmt.setString(2, sstate); 
cstmt.setString(3, sdate); 
cstmt.setString(4, stariff); 
cstmt.setString(5, sdiscom); 
cstmt.setString(6, ssiteid); 
cstmt.executeUpdate(); 
out.println("updated successfully");