2012-06-12 80 views
0

我設計了一個jsp頁面,我將字段值傳遞給另一個jsp頁面。在此頁面中,我想將值存儲在數據庫中,並根據成功或失敗顯示相應的消息這一頁。一切似乎正常工作,除了數據沒有插入到數據庫中並且沒有顯示錯誤消息。將jsp連接到數據庫


students.jsp

<form id="form" method="post" action="students_final.jsp"> 
    Student name:<input type="text" value="" name="name"> 
    Reg no:<input type="text" value="" name="regno"> 
    <input type="submit" value="Register" /> 
</form> 

students_final.jsp

<%@page contentType="text/html" pageEncoding="UTF-8"%> 
<%@page language="java"%> 
<%@page import="java.lang.*" import="java.sql.*"%> 

<% 
    try { 
    Class.forName("com.mysql.jdbc.Driver"); 
    String url="jdbc:mysql://localhost:3306/userdbase"; 
    Connection connection = DriverManager.getConnection(url, "root", "passwd"); 

    String name=request.getParameter("name"); 
    String regno=request.getParameter("regno"); 

    "INSERT INTO `schooldatabase`.`test` (`name`) VALUES ('" + name + "');"; 
    Statement st= connection.createStatement(); 
    int count=st.executeUpdate(strquery); 

    /*ResultSet rs= st.executeQuery(strquery);*/ 
    } 
    catch(Exception e) 
    { 
    System.out.println("Could not connect"); 
    } 
%> 

我知道有一個非常愚蠢的錯誤。請幫我找到它!

+0

您的第一個錯誤是將scriptlet代碼添加到JSP中。學習JSTL。 – duffymo

+0

但我想我們可以在JSP頁面中使用scriptlet ... –

+0

你可以,但你不應該。這是1998年的技術。沒有人再用這種方式寫JSP了。 – duffymo

回答

1

嘗試提交交易。這可能是自動提交是錯誤的。

您應該使用PreparedStatement。這是一個等待發生的SQL注入攻擊。

你不關閉你的任何資源,所以這個應用程序將不會運行很長時間,如果你得到它的工作。

+0

我試過使用上面的腳本。沒有插入。但我可以通過打開mysql命令行來插入值.. –

+0

是的,我明白了。你嘗試過嗎? – duffymo

+0

+1,用於指出SQL注入漏洞。 – Prime

0
String url = "jdbc:mysql://localhost:3306/schooldatabase"; 

如果我沒有記錯的話,你跑在MySQL這個查詢並儘可能我可以告訴「schooldatabase」是數據庫名稱和「測試」是在它的表。另外

String query = "INSERT INTO test ('name') VALUES ("+name+")"; 
int count = st.executeUpdate(query); 

這將工作。

0

「INSERT INTO schooldatabasetestname)VALUES('」+ name +「');」;

將此分配給變量