關於Java web中servlet連線資料庫的一個細節問題
阿新 • • 發佈:2019-02-20
今天在寫使用者註冊功能的程式碼時,當通過servlet接收表單資料並儲存到資料庫時,沒有出現任何錯誤,但是在資料庫中檢視,第一列使用者名稱顯示為空,無論如何檢查都感覺是對的,後來再把jsp程式碼和servlet程式碼結合著看的時候,終於發現了錯誤:
在寫jsp頁面時,對使用者名稱所給的名字,在servlet接收時要對應,不然它不會報錯,但是資料庫中儲存的資料卻為空,下面具體看程式碼:
這是寫的一個簡單的jsp使用者註冊頁面,給使用者名稱的名字是username,密碼的名字是keyword,學號的名字是num
<body> <form action="servlet/Login" method="post"> 使用者名稱:<input type="text" name="username"> <br/> 密 碼 :<input type="keyword" name="keyword"><br/> 學 號:<input type="num" name="num"><br/> <input type="submit" value="註冊"> </form> </body>
下面是獲取表單資訊,並儲存到資料庫中的servlet,注意獲取資訊時名字要和jsp提交的資訊一致,
response.setContentType("text/html;charset=UTF-8"); //獲取輸入資訊 String member = request.getParameter("username"); String keyword = request.getParameter("keyword"); String num = request.getParameter("num"); //連線資料庫 String url = "jdbc:mysql://localhost:3306/thecheck"; String user="root"; String password = "19960104"; try { Class.forName("com.mysql.jdbc.Driver"); try { java.sql.Connection conn = DriverManager.getConnection(url, user, password); java.sql.Statement st = conn.createStatement(); String sql = "insert into student values("+"'"+member+"',"+"'"+keyword+"',"+"'"+num+"',"+"0)"; //System.out.println(sql); st.executeUpdate(sql); } catch (SQLException e) { e.printStackTrace(); } } catch (ClassNotFoundException e) { e.printStackTrace(); } }
其中還要注意的是寫的輸入語句要和資料庫中的sql語句對應,否則也會出現錯誤。