JSP訪問數據庫的過程與問題


使用的mysql版本8.0.11,tomcat版本7.0.88,myeclipse2017ci9破解版

-->1:學習如何用myeclipse + tomcat + mysql + browser發布自己的web項目,這個項目是所有項目的開端。

-->2:我需要做到:顯示我mysql中某一個數據庫其中一個列表里的內容,我需要利用java的JDBC技術,其中主要用到這幾個API:

  java.sql.Connection:建立程序和數據庫的通道,負責連接數據庫,在這里需要傳遞連接數據庫的URL,以及對應的用戶名和密碼。

  java.sql.Statement:負責執行數據庫SQL語句,我只要能連接上數據庫,並且能執行一條語句,那我就可以執行很多條語句。

  java.sql.ResultSet:負責存放查詢結果,這是一個存儲查詢結果的對象,但是結果集並不僅僅具有存儲的功能,同時還具有操縱數據的功能,可以完成對數據的更新。簡單記錄幾個其擁有的方法:getArray(int colindex/String columnname)、getAsciiStream ( int colindex/String colname )。

-->3:首先一開始是安裝好了mysql、Myecplise、tomcat后,能實現:在mysql客戶端能通過用戶名和密碼查詢數據,建立刪除數據等,在myecplise里面可以編寫項目,並且已經可以把簡單的項目部署到tomcat中,這是軟件自動檢測到的tomcat,只需要在瀏覽器中輸入對應的項目地址就可以了。

-->4:這次是需要連接上數據庫的,剛才的jdbc只是負責處理的java技術,連接還是需要數據庫本身提供的驅動,在mysql網上下載到驅動,是一個zip包,里面帶有一個jar包,把這個包分別復制到myeclipse項目下的lib包中和tomcat目錄下的lib包中。到此可以防止一些java.lang.classnotfoundexception的錯誤。

-->5:在做完這些后就開始寫代碼,然后發布,但是在瀏覽器查看的時候會出現幾個錯誤,分別是:

  --》1:The server time zone value '?й???????' is unrecognized or represents more than one time zone;

  中間的亂碼是因為識別不出中文編碼的關系,這個需要在URL后面添加時區信息和編碼信息,最終URL如下:

  "jdbc:mysql://localhost:3306/liyt" + "?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC";

  --》2:Malformed database URL;

  這是顯示URL格式出問題了,實際上一開始我在加時區的時候是直接把時區的信息添加在URL后面,URL中還帶有數據庫的用戶名和密碼:

  jdbc:mysql://localhost:3306/"+dbName+ "?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC" + "?user="+userName+"&password="+userPasswd;

  但是這樣並不能奏效,我還修改了對應的驅動類名,這個現在看來是沒有問題的。后來我把URL,用戶名和密碼分別作為三個參數傳給了Connection,最后是能夠顯示。這中間為了發現問題我把代碼一行一行地執行,最后顯示是Connecion這一行出現了問題,於是我就改了參數,最后能夠輸出正確的結果了。

 1 <%@ page language="java" import="java.sql.*" pageEncoding="gb2312"%>
 2 <html>
 3     <body>
 4         <%   
 5             out.println("這是我家!<br>");
 6             String driverName="com.mysql.cj.jdbc.Driver";
 7             String userName="root";
 8             String userPasswd="858520";
 9             String dbName="liyt";
10             String tableName="test";
11             
12             String url ="jdbc:mysql://localhost:3306/liyt" + "?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC";
13             //String url="jdbc:mysql://localhost:3306/"+dbName+ "?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC" + "?user="+userName+"&password="+userPasswd;
14             Class.forName("com.mysql.jdbc.Driver").newInstance();
15             Connection conn=DriverManager.getConnection(url, userName, userPasswd); 
16             Statement stmt = conn.createStatement();
17             String sql="SELECT * FROM "+tableName;
18             ResultSet rs = stmt.executeQuery(sql);
19             //out.println(rs);
20             out.print("name");
21             out.print("|");
22             out.print("sex");
23             out.print("|");
24             out.print("age");
25             out.print("<br>");
26             while(rs.next()){
27                 out.print(rs.getString(1)+" ");
28                 out.print("|");
29                 out.print(rs.getString(2)+" ");
30                 out.print("|");
31                 out.print(rs.getString(3)); 
32                 out.print("<br>");
33             }
34             out.print("<br>");
35             out.print("ok, Database Query Successd!");
36             rs.close(); 
37             stmt.close();
38             conn.close();
39              out.println("這是你家3!");
40 
41 %>  
42     </body>
43 </html>

 

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM