对于项目开发来说,数据库是占据着相当重要的一个环节。

这节内容围绕一个关于数据库操作的程序来展开,包括添加、修改、删除和查询(简称CRUD)几种操作

这儿给出程序的题目:对新闻标题进行CRUD的操作

一 .  既然是新闻标题,数据库的表就建立为如下图所示的几个属性:

  该表的名字取名为:firstLevelTitle

java SE_ 数据库的连接操作_访问数据库_数据库

我在这儿用的是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包。

        如下图所示:

java SE_ 数据库的连接操作_访问数据库_数据库_02

 三、实现新闻的数据库操作类  fltDao.java

  1.     private final String CLS = "org.gjt.mm.mysql.Driver"//驱动类  
  2.     private final String URL = "jdbc:mysql://localhost:3306/news"; //URL  
  3.     private final String USER = "root"//数据库的用户名  
  4.     private final String PWD = "123456"//数据库的密码  
  5. private Connection conn = null//数据库连接  
  6. private PreparedStatement pStmt = null//预编译指令集  
  7. private ResultSet rs = null//结果集 

    数据库的连接需要这些量

 四、添加新闻标题的方法

  1. public int addFlt(String titleName, String creator, Date createTime){  
  2.           int iResult = 0//记录操作结果的变量  
  3.           try{  
  4.                 Class.forName(CLS);  
  5.                 conn = DriverManager.getConnection(URL, USER, PWD);  
  6.                 String sql = "insert into firstLevelTitle(titleName, creator, createTime)  
  7. values(?,?,?)";  // 数据库中的添加操作
  8.                 pStmt = conn.prepareStatement(sql);  
  9.                 pStmt.setString(1, titleName);  
  10.                 pStmt.setString(2, creator);  
  11.                 DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  
  12.                 pStmt.setString(3, df.format(createTime));  
  13.      iResult= pStmt.executeUpdate();  
  14.      conn.close();  
  15. }catch(Exception ex){  
  16.      ex.printStackTrace();  
  17. }  
  18. return iResult;  

 五、修改新闻标题

  1. public int editFlt(int id, String titleName){  
  2.     int iResult = 0//记录操作结果的变量  
  3.     try{  
  4.           Class.forName(CLS);  
  5.           conn = DriverManager.getConnection(URL, USER, PWD);  
  6.           String sql = "update firstLevelTitle set titleName=? where id=?";  
  7.           pStmt = conn.prepareStatement(sql);  
  8.           pStmt.setString(1, titleName);  
  9.           pStmt.setInt(2, id);  
  10.      iResult= pStmt.executeUpdate();  
  11.      conn.close();  
  12. }catch(Exception ex){  
  13.      ex.printStackTrace();  
  14. }  
  15. return iResult;  

 六、 删除新闻标题

  1. public int delFlt(int id){  
  2.     int iResult = 0; //记录操作结果的变量  
  3.     try{  
  4.           Class.forName(CLS);  
  5.           conn = DriverManager.getConnection(URL, USER, PWD);  
  6.           String sql = "delete from firstLevelTitle where id=?";  
  7.           pStmt = conn.prepareStatement(sql);  
  8.           pStmt.setInt(1, id);  
  9.      iResultpStmt.executeUpdate();  
  10.      conn.close();  
  11. }catch(Exception ex){  
  12.      ex.printStackTrace();  
  13. }  
  14. return iResult;  

 七、查询新闻标题

  1. public void showFltList(String tishi){  
  2. try{  
  3. Class.forName(CLS);  
  4. conn = DriverManager.getConnection(URL, USER, PWD);  
  5. String sql = "select * from firstLevelTitle";  
  6. pStmt = conn.prepareStatement(sql);  
  7.                rs=pStmt.executeQuery();  
  8.                //对查询结果进行处理  
  9.                System.out.println(tishi); //输出提示信息  
  10.                while(rs.next()){  
  11.                      System.out.println("id:"+rs.getInt("id")+",名称:  
  12. "+rs.getString("titleName")+" , 创 建 者 : "+rs.getString("creator")+" , 创 建 时 间 :  
  13. "+rs.getString("createTime"));  
  14.                }  
  15.                conn.close();  
  16.           }catch(Exception ex){  
  17.                ex.printStackTrace();  
  18.           }  
  19.      } 

 八、测试并运行

  1. public static void main(String[] args) {  
  2.      FltDao fltDao = new FltDao();  
  3.      //添加新闻类型  
  4.      fltDao.addFlt("体育", "管理员", new Date());  
  5.      fltDao.addFlt("娱乐", "管理员", new Date());  
  6.      //显示新闻类型  
  7.      fltDao.showFltList("添加新闻类型后新闻类型列表如下:");  
  8.      //修改新闻类型  
  9.      fltDao.editFlt(1, "体育 1");  
  10.      //显示新闻类型  
  11.      fltDao.showFltList("修改新闻类型后新闻类型列表如下:");  
  12.      //删除新闻类型  
  13.      fltDao.delFlt(2);  
  14.      //显示新闻类型  
  15.      fltDao.showFltList("删除新闻类型后新闻类型列表如下:");  

 全部代码展示:

  1. package bzu.jsj.dao;  
  2. import java.sql.*;  
  3. import java.text.*;  
  4. import java.util.Date;  
  5.  
  6. public class FltDao {  
  7.     private final String CLS = "com.microsoft.sqlserver.jdbc.SQLServerDriver"; //驱动类  
  8.     private final String URL = "jdbc:sqlserver://localhost:1433;DatabaseName=news"; //URL  
  9.     private final String USER = "sa"; //数据库的用户名  
  10.     private final String PWD = "123456"; //数据库的密码  
  11. private Connection conn = null; //数据库连接  
  12. private PreparedStatement pStmt = null; //预编译指令集  
  13. private ResultSet rs = null; //结果集  
  14.      /**  
  15.       * 添加一级新闻标题的方法  
  16.       */  
  17.      public int addFlt(String titleName, String creator, Date createTime){  
  18.           int iResult = 0; //记录操作结果的变量  
  19.           try{  
  20.                 Class.forName(CLS);  
  21.                 conn = DriverManager.getConnection(URL, USER, PWD);  
  22.                 String sql = "insert into firstLevelTitle(titleName, creator, createTime)  
  23. values(?,?,?)";  
  24.                 pStmt = conn.prepareStatement(sql);  
  25.                 pStmt.setString(1, titleName);  
  26.                 pStmt.setString(2, creator);  
  27.                 DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  
  28.                 pStmt.setString(3, df.format(createTime));  
  29.      iResultpStmt.executeUpdate();  
  30.      conn.close();  
  31. }catch(Exception ex){  
  32.      ex.printStackTrace();  
  33. }  
  34. return iResult;  
  35. }  
  36. /**  
  37.  * 修改一级新闻标题的方法,只能修改标题  
  38.  */  
  39. public int editFlt(int id, String titleName){  
  40.     int iResult = 0; //记录操作结果的变量  
  41.     try{  
  42.           Class.forName(CLS);  
  43.           conn = DriverManager.getConnection(URL, USER, PWD);  
  44.           String sql = "update firstLevelTitle set titleName=? where id=?";  
  45.           pStmt = conn.prepareStatement(sql);  
  46.           pStmt.setString(1, titleName);  
  47.           pStmt.setInt(2, id);  
  48.      iResultpStmt.executeUpdate();  
  49.      conn.close();  
  50. }catch(Exception ex){  
  51.      ex.printStackTrace();  
  52. }  
  53. return iResult;  
  54. }  
  55. /**  
  56.  * 根据 id 删除指定的新闻类型的方法  
  57.  */  
  58. public int delFlt(int id){  
  59.     int iResult = 0; //记录操作结果的变量  
  60.     try{  
  61.           Class.forName(CLS);  
  62.           conn = DriverManager.getConnection(URL, USER, PWD);  
  63.           String sql = "delete from firstLevelTitle where id=?";  
  64.           pStmt = conn.prepareStatement(sql);  
  65.           pStmt.setInt(1, id);  
  66.      iResultpStmt.executeUpdate();  
  67.      conn.close();  
  68. }catch(Exception ex){  
  69.      ex.printStackTrace();  
  70. }  
  71. return iResult;  
  72. }  
  73. /**  
  74.  * 显示新闻列表的方法  
  75.  * @param tishi 显示提示信息  
  76.  */  
  77. public void showFltList(String tishi){  
  78. try{  
  79. Class.forName(CLS);  
  80. conn = DriverManager.getConnection(URL, USER, PWD);  
  81. String sql = "select * from firstLevelTitle";  
  82. pStmt = conn.prepareStatement(sql);  
  83.                rs=pStmt.executeQuery();  
  84.                //对查询结果进行处理  
  85.                System.out.println(tishi); //输出提示信息  
  86.                while(rs.next()){  
  87.                      System.out.println("id:"+rs.getInt("id")+",名称:  
  88. "+rs.getString("titleName")+" , 创 建 者 : "+rs.getString("creator")+" , 创 建 时 间 :  
  89. "+rs.getString("createTime"));  
  90.                }  
  91.                conn.close();  
  92.           }catch(Exception ex){  
  93.                ex.printStackTrace();  
  94.           }  
  95.      }  
  96. /**  
  97.   * 在入口函数中进行测试  
  98.   */  
  99. public static void main(String[] args) {  
  100.      FltDao fltDao = new FltDao();  
  101.      //添加新闻类型  
  102.      fltDao.addFlt("体育", "管理员", new Date());  
  103.      fltDao.addFlt("娱乐", "管理员", new Date());  
  104.      //显示新闻类型  
  105.      fltDao.showFltList("添加新闻类型后新闻类型列表如下:");  
  106.      //修改新闻类型  
  107.      fltDao.editFlt(1, "体育 1");  
  108.      //显示新闻类型  
  109.      fltDao.showFltList("修改新闻类型后新闻类型列表如下:");  
  110.      //删除新闻类型  
  111.      fltDao.delFlt(2);  
  112.      //显示新闻类型  
  113.      fltDao.showFltList("删除新闻类型后新闻类型列表如下:");  

 

 注意:

    1. 对于数据库的操作,CRUD是很重要的。

    2.  可能有些学员对于代码中出现的很多陌生的变量以及单词有 抵触,很难学习,但是 

         细心的读者就会发现,代码的模式书写在一定程度上是类似的,代码是不变的,一些

        变量是 不变的,所以这就简单了。对于初学者要熟记,虽然我不提倡背。但是该背的

        还是需要背。