对于项目开发来说,数据库是占据着相当重要的一个环节。
这节内容围绕一个关于数据库操作的程序来展开,包括添加、修改、删除和查询(简称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. 可能有些学员对于代码中出现的很多陌生的变量以及单词有 抵触,很难学习,但是
细心的读者就会发现,代码的模式书写在一定程度上是类似的,代码是不变的,一些
变量是 不变的,所以这就简单了。对于初学者要熟记,虽然我不提倡背。但是该背的
还是需要背。