對於項目開發來說,數據庫是占據著相當重要的一個環節。
這節內容圍繞一個關於數據庫操作的程序來展開,包括添加、修改、刪除和查詢(簡稱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