對於項目開發來說,數據庫是占據著相當重要的一個環節。
這節內容圍繞一個關於數據庫操作的程序來展開,包括添加、修改、刪除和查詢(簡稱CRUD)幾種操作
這兒給出程序的題目:對新聞標題進行CRUD的操作。
一 . 既然是新聞標題,數據庫的表就建立為如下圖所示的幾個屬性:
該表的名字取名為:firstLevelTitle
我在這兒用的是MySQL,MySQL創建表以及其他的用法看http://zhaoyuqiang.blog.51cto.com/6328846/1127226
二、創建java項目
在Eclipse或MyEclipse中創建java Project項目 news
將對應用的mysqljdbc的驅動包拷貝到項目的lib文件夾下。
注意: mysqljdbc是一個jar包,不可解壓,將此包直接拖進或者是復制黏貼進lib文件夾下就可以了,這個包中有數據庫連接用到的東西。這個包是從外界導入進Eclipse或MyEclipse,在網上可以下載到該包。當然不同的數據庫有不同的包,如果是SQL Server 2005的話就應該導進sqljdbc的數據jar包。
如下圖所示:
三、實現新聞的數據庫操作類 fltDao.java
private final String CLS = "org.gjt.mm.mysql.Driver"; //驅動類 private final String URL = "jdbc:mysql://localhost:3306/news"; //URL private final String USER = "root"; //數據庫的用戶名 private final String PWD = "123456"; //數據庫的密碼 private Connection conn = null; //數據庫連接 private PreparedStatement pStmt = null; //預編譯指令集 private ResultSet rs = null; //結果集
數據庫的連接需要這些量
四、添加新聞標題的方法
public int addFlt(String titleName, String creator, Date createTime){ int iResult = 0; //記錄操作結果的變量 try{ Class.forName(CLS); conn = DriverManager.getConnection(URL, USER, PWD); String sql = "insert into firstLevelTitle(titleName, creator, createTime) values(?,?,?)"; // 數據庫中的添加操作 pStmt = conn.prepareStatement(sql); pStmt.setString(1, titleName); pStmt.setString(2, creator); DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); pStmt.setString(3, df.format(createTime)); iResult= pStmt.executeUpdate(); conn.close(); }catch(Exception ex){ ex.printStackTrace(); } return iResult; }
五、修改新聞標題
public int editFlt(int id, String titleName){ int iResult = 0; //記錄操作結果的變量 try{ Class.forName(CLS); conn = DriverManager.getConnection(URL, USER, PWD); String sql = "update firstLevelTitle set titleName=? where id=?"; pStmt = conn.prepareStatement(sql); pStmt.setString(1, titleName); pStmt.setInt(2, id); iResult= pStmt.executeUpdate(); conn.close(); }catch(Exception ex){ ex.printStackTrace(); } return iResult; }
六、 刪除新聞標題
public int delFlt(int id){ int iResult = 0; //記錄操作結果的變量 try{ Class.forName(CLS); conn = DriverManager.getConnection(URL, USER, PWD); String sql = "delete from firstLevelTitle where id=?"; pStmt = conn.prepareStatement(sql); pStmt.setInt(1, id); iResult= pStmt.executeUpdate(); conn.close(); }catch(Exception ex){ ex.printStackTrace(); } return iResult; }
七、查詢新聞標題
public void showFltList(String tishi){ try{ Class.forName(CLS); conn = DriverManager.getConnection(URL, USER, PWD); String sql = "select * from firstLevelTitle"; pStmt = conn.prepareStatement(sql); rs=pStmt.executeQuery(); //對查詢結果進行處理 System.out.println(tishi); //輸出提示信息 while(rs.next()){ System.out.println("id:"+rs.getInt("id")+",名稱: "+rs.getString("titleName")+" , 創 建 者 : "+rs.getString("creator")+" , 創 建 時 間 : "+rs.getString("createTime")); } conn.close(); }catch(Exception ex){ ex.printStackTrace(); } }
八、測試並運行
public static void main(String[] args) { FltDao fltDao = new FltDao(); //添加新聞類型 fltDao.addFlt("體育", "管理員", new Date()); fltDao.addFlt("娛樂", "管理員", new Date()); //顯示新聞類型 fltDao.showFltList("添加新聞類型後新聞類型列表如下:"); //修改新聞類型 fltDao.editFlt(1, "體育 1"); //顯示新聞類型 fltDao.showFltList("修改新聞類型後新聞類型列表如下:"); //刪除新聞類型 fltDao.delFlt(2); //顯示新聞類型 fltDao.showFltList("刪除新聞類型後新聞類型列表如下:"); }
全部代碼展示:
package bzu.jsj.dao; import java.sql.*; import java.text.*; import java.util.Date; public class FltDao { private final String CLS = "com.microsoft.sqlserver.jdbc.SQLServerDriver"; //驅動類 private final String URL = "jdbc:sqlserver://localhost:1433;DatabaseName=news"; //URL private final String USER = "sa"; //數據庫的用戶名 private final String PWD = "123456"; //數據庫的密碼 private Connection conn = null; //數據庫連接 private PreparedStatement pStmt = null; //預編譯指令集 private ResultSet rs = null; //結果集 /** * 添加一級新聞標題的方法 */ public int addFlt(String titleName, String creator, Date createTime){ int iResult = 0; //記錄操作結果的變量 try{ Class.forName(CLS); conn = DriverManager.getConnection(URL, USER, PWD); String sql = "insert into firstLevelTitle(titleName, creator, createTime) values(?,?,?)"; pStmt = conn.prepareStatement(sql); pStmt.setString(1, titleName); pStmt.setString(2, creator); DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); pStmt.setString(3, df.format(createTime)); iResult= pStmt.executeUpdate(); conn.close(); }catch(Exception ex){ ex.printStackTrace(); } return iResult; } /** * 修改一級新聞標題的方法,只能修改標題 */ public int editFlt(int id, String titleName){ int iResult = 0; //記錄操作結果的變量 try{ Class.forName(CLS); conn = DriverManager.getConnection(URL, USER, PWD); String sql = "update firstLevelTitle set titleName=? where id=?"; pStmt = conn.prepareStatement(sql); pStmt.setString(1, titleName); pStmt.setInt(2, id); iResult= pStmt.executeUpdate(); conn.close(); }catch(Exception ex){ ex.printStackTrace(); } return iResult; } /** * 根據 id 刪除指定的新聞類型的方法 */ public int delFlt(int id){ int iResult = 0; //記錄操作結果的變量 try{ Class.forName(CLS); conn = DriverManager.getConnection(URL, USER, PWD); String sql = "delete from firstLevelTitle where id=?"; pStmt = conn.prepareStatement(sql); pStmt.setInt(1, id); iResult= pStmt.executeUpdate(); conn.close(); }catch(Exception ex){ ex.printStackTrace(); } return iResult; } /** * 顯示新聞列表的方法 * @param tishi 顯示提示信息 */ public void showFltList(String tishi){ try{ Class.forName(CLS); conn = DriverManager.getConnection(URL, USER, PWD); String sql = "select * from firstLevelTitle"; pStmt = conn.prepareStatement(sql); rs=pStmt.executeQuery(); //對查詢結果進行處理 System.out.println(tishi); //輸出提示信息 while(rs.next()){ System.out.println("id:"+rs.getInt("id")+",名稱: "+rs.getString("titleName")+" , 創 建 者 : "+rs.getString("creator")+" , 創 建 時 間 : "+rs.getString("createTime")); } conn.close(); }catch(Exception ex){ ex.printStackTrace(); } } /** * 在入口函數中進行測試 */ public static void main(String[] args) { FltDao fltDao = new FltDao(); //添加新聞類型 fltDao.addFlt("體育", "管理員", new Date()); fltDao.addFlt("娛樂", "管理員", new Date()); //顯示新聞類型 fltDao.showFltList("添加新聞類型後新聞類型列表如下:"); //修改新聞類型 fltDao.editFlt(1, "體育 1"); //顯示新聞類型 fltDao.showFltList("修改新聞類型後新聞類型列表如下:"); //刪除新聞類型 fltDao.delFlt(2); //顯示新聞類型 fltDao.showFltList("刪除新聞類型後新聞類型列表如下:"); }
注意:
1. 對於數據庫的操作,CRUD是很重要的。
2. 可能有些學員對於代碼中出現的很多陌生的變量以及單詞有 抵觸,很難學習,但是
細心的讀者就會發現,代碼的模式書寫在一定程度上是類似的,代碼是不變的,一些
變量是 不變的,所以這就簡單了。對於初學者要熟記,雖然我不提倡背。但是該背的
還是需要背。
本文出自 “趙玉強的博客” 博客,請務必保留此出處http://zhaoyuqiang.blog.51cto.com/6328846/1127658