JDBC實現從數據庫中讀取信息以表格的形式展示


方法都是通用的,要看你如何去靈活的運用!!!

本文以“新聞發布系統”為例

第一步:建立數據庫(使用的是mysql數據庫)

其中數據庫信息為:

數據庫名:news

表名:title,字段名分別為(序號、標題名稱、創建者、創建時間)

create table title(
id int(2) primary key,
name varchar(20),
creator varchar(20),
createTime datetime
);

第二步:建立WEB項目

沒有結合框架進行搭建項目,只是簡單做個練習。

在src文件夾下創建連接數據庫相關的類,分別為:連接數據庫的類、數據的實體類;在lib下導入數據庫相關的驅動包(mysql-connector-java-5.1.30-bin.jar)

從Maven默認中央倉庫中下載:http://repo1.maven.org/maven2/mysql/mysql-connector-java/

或從這里下載(配有搜索框比較方便):https://search.maven.org/

2.1 :數據庫實體類,此類中主要含有數據庫的字段,屬性名要求與數據庫中屬性名一一對應。【包:com.entity;實體類:Title.java】

package com.entity;

import java.sql.Date;

public class Title {
    /**
     *下面這四個屬性為數據庫表中的四個屬性
     */
    private int id;   
    private String name;
    private String creator;
    private Date createTime;
    
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getCreator() {
        return creator;
    }
    public void setCreator(String creator) {
        this.creator = creator;
    }
    public Date getCreateTime() {
        return createTime;
    }
    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }
    public Title(int id, String name, String creator, Date createTime) {
        super();
        this.id = id;
        this.name = name;
        this.creator = creator;
        this.createTime = createTime;
    }
}
View Code

說明:

a. 實體類的作用:在JAVAWEB中,實體類里面的某一個類,相當於是數據庫里的一張表,一個類里面的某個字段相當於表的列名。

b. 在實體類里有getter和setter方法,getter是只讀,setter是寫入

2.2:數據庫操作類,下面以對數據庫的查詢功能書寫代碼。【包:com.dao;類:TitleDao.java】

package com.dao;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;

import com.entity.Title;

public class TitleDaO {
    public List readTitle(){
        List<Title> list =new ArrayList<Title>();
        Connection con=null;
        PreparedStatement psmt=null;
        ResultSet rs=null;
        try {
            Class.forName("com.mysql.jdbc.Driver");
con=DriverManager.getConnection("jdbc:mysql://localhost:3306/news","root","1234");
            String sql="select * from title";
            psmt=con.prepareStatement(sql);
            rs=psmt.executeQuery();
            
            while(rs.next())
            {
                int id=rs.getInt("id");
                String name=rs.getString("name");
                String creator=rs.getString("creator");
                Date createTime=rs.getDate("createTime");
                Title tl=new Title(id, name, creator, createTime);
                list.add(tl);
            }
            
        } catch (Exception e) {
            e.printStackTrace();
        }finally
        {
            try {
                if(rs!=null)
                {
                    rs.close();
                }
                if(psmt!=null)
                {
                    psmt.close();
                }
                if(con!=null)
                {
                    con.close();
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        return list;
    }
    
}
View Code

說明:

a. 創建方法(public List readTitle()),之所以選擇返回值是List是因為一個標題含有id,name,creator,createTime信息。這些信息存在集合中,便於管理,操作。

b. 創建變量,連接數據庫,在這個web project使用的是JDBC技術連接的數據庫,這技術需要一類三接口【DriverManager類,Connection接口,Statement接口,ResultSet接口】

c. 與數據庫建立連接的步驟:1. 加載數據庫驅動;2.數去數據庫連接;3.獲取Statement對象;4.關閉資源

d. 在數據庫中讀取的信息需要使用List接口,以實現對數據庫的一列信息封裝起來進行后續的使用。就比如:在桌子上有多個瓶子,還有裝瓶子的箱子——>例推類中屬性為瓶子,箱子則為List集合

e. 細節詳解:public List readTitle()方法對每一行的數據進行封裝,通過為實體類建立對象(entity),調用它的構造方法,通過構造方法的方式進行賦值,然后把通過賦值完成的數據加入list集合中,這樣一行的數據就進行封裝完成,通過while()循環,從而實現對數據的遍歷,進而實現對多行數據的存儲,但是在此之前需要創建list對象,並且導入list對象的相關類——> List<Title> list=new ArrayList<Title>();

 

2.3:在web頁面中顯示數據庫信息【在webroot下建立titleList.jsp,使用TitleDao.java中的查詢方法得到所有記錄,然后用表格在頁面顯示】

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@page import="com.dao.TitleDaO,com.entity.Title"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>Test-newsTitle</title>
  </head>
  
  <body>
  <table border="1">
      <tr>
          <td>序號</td>
          <td>標題名稱</td>
          <td>創建者</td>
          <td>創建時間</td>
      </tr>
        <%
           TitleDAO dao=new TitleDAO();
           List<Title> list =dao.readTitle();    
           for(Title tl:list) {
        %>
          <tr>
              <td><%=tl.getId() %></td>
              <td><%=tl.getName() %></td>
              <td><%=tl.getCreator() %>></td>
              <td><%=tl.getCreateTime() %></td>
          </tr>
         <%
          }
         %>
  </table>
  </body>
</html>

 說明:<%%>標簽中的內容解釋

1、通過TitleDao dao=new TitleDao();  創建對象

2、List<Title> list=dao.readTitle();  接口LIst創建list對象,然后通過對象dao調用TitleDao中的readTitle()方法,從而把返回的list賦予給list

3、遍歷需要放在行(<tr></tr>)標簽的外面,這樣才能把數據進行行存儲,由於使用了遍歷,所以才可以把數據庫中title表中的數據全部以表格的形式輸出

4、美化前台頁面,請學習html+css+js

效果下表格所示:

序號 標題名稱 創建者 創建時間
1 多彩的世界 風一樣的男人 2017-09-18
2 雨后有彩虹 李書桓 2016-05-25
3 晨跑的弊端 郭曉曉 2014-09-11


免責聲明!

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



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