java jdbc连接mysql数据库实现增删改查操作


jdbc相信大家都不陌生,只要是个搞java的,最初接触j2ee的时候都是要学习这么个东西的,谁叫程序得和数据库打交道呢!而jdbc就是和数据库打交道非常基础的一个知识,也是比较接近底层的,在实际的工作中大家用得更多的其实还是比较成熟的框架,例如Hibernate、Mybatis。 

但是作为这些成熟框架的底层的jdbc却也是我们应该去掌握的,只有了解了jdbc的增删改查,这样在以后如果有兴趣去研究Hibernate或者Mybatis的源代码的时候才能更好的去理解这些成熟的框架是如何去实现增删改查的。 

回归正题,先来看看我们的开发环境: 

Java语言、Eclipse开发工具、Mysql数据库、Navicat数据库可视化工具。 

开发环境的安装搭建及使用请自己查阅资料(很简单的),这里不详细阐述。 

第一步,创建数据库,利用Navicat数据库可视化工具随便建立一个数据库,在库中建立一张表,表里给几个字段(记得给个id字段,唯一主键,自增序列),再随便给上两条数据便好,用来测试功能,如图: 

第二步,打通数据库(这个例子希望大家自己动手敲敲,耽误不了多少时间,熟悉一下jdbc如何和数据库打交道,故以图示之),如图:

第三步,改造DBUtil类,方便在dao层获得数据库的连接,代码如下:

 package com.czgo.db;


import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class DBUtil
{
  private static final String URL = "jdbc:mysql://127.0.0.1:3306/imooc";
  private static final String UNAME = "root";
  private static final String PWD = "root";

  private static Connection conn = null;

  static
  {
    try
    {
      // 1.加载驱动程序
      Class.forName("com.mysql.jdbc.Driver");
      // 2.获得数据库的连接
      conn = DriverManager.getConnection(URL, UNAME, PWD);
    }
    catch (ClassNotFoundException e)
    {
      e.printStackTrace();
    }
    catch (SQLException e)
    {
      e.printStackTrace();
    }
  }

  public static Connection getConnection()
  {
    return conn;
  }
}

第四步,创建实体类(如上图,大家观察包的分配,我们将采用MVC思想设计本实例,有关于mvc的设计思想,请大家自行学习,这里不多说)代码如下:

package com.czgo.model;

import java.io.Serializable;

/**
 * 实体类:女神类
 * 
 * @author AlanLee
 * 
 */
public class Goddess implements Serializable
{
  private static final long serialVersionUID = 1L;

  /**
   * 唯一主键
   */
  private Integer id;
  /**
   * 姓名
   */
  private String name;
  /**
   * 手机号码
   */
  private String mobie;
  /**
   * 电子邮件
   */
  private String email;
  /**
   * 家庭住址
   */
  private String address;

  public Integer getId()
  {
    return id;
  }

  public void setId(Integer id)
  {
    this.id = id;
  }

  public String getName()
  {
    return name;
  }

  public void setName(String name)
  {
    this.name = name;
  }

  public String getMobie()
  {
    return mobie;
  }

  public void setMobie(String mobie)
  {
    this.mobie = mobie;
  }

  public String getEmail()
  {
    return email;
  }

  public void setEmail(String email)
  {
    this.email = email;
  }

  public String getAddress()
  {
    return address;
  }

  public void setAddress(String address)
  {
    this.address = address;
  }
}

第五步,dao层的实现(这里由于是小例子没有写dao接口,实际工作中大型项目应该是要写dao接口的,便于程序的维护和扩展),代码如下:

package com.czgo.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import com.czgo.db.DBUtil;
import com.czgo.model.Goddess;

/**
 * 数据层处理类
 * 
 * @author AlanLee
 * 
 */
public class GoddessDao
{
  /**
   * 查询全部女神
   * 
   * @return
   * @throws SQLException
   */
  public List<Goddess> query() throws SQLException
  {
    List<Goddess> goddessList = new ArrayList<Goddess>();

    // 获得数据库连接
    Connection conn = DBUtil.getConnection();

    StringBuilder sb = new StringBuilder();
    sb.append("select id,name,mobie,email,address from goddess");

    // 通过数据库的连接操作数据库,实现增删改查
    PreparedStatement ptmt = conn.prepareStatement(sb.toString());

    ResultSet rs = ptmt.executeQuery();

    Goddess goddess = null;

    while (rs.next())
    {
      goddess = new Goddess();
      goddess.setId(rs.getInt("id"));
      goddess.setName(rs.getString("name"));
      goddess.setMobie(rs.getString("mobie"));
      goddess.setEmail(rs.getString("email"));
      goddess.setAddress(rs.getString("address"));

      goddessList.add(goddess);
    }
    return goddessList;
  }

  /**
   * 查询单个女神
   * 
   * @return
   * @throws SQLException
   */
  public Goddess queryById(Integer id) throws SQLException
  {
    Goddess g = null;

    Connection conn = DBUtil.getConnection();

    String sql = "" + " select * from imooc_goddess " + " where id=? ";

    PreparedStatement ptmt = conn.prepareStatement(sql);

    ptmt.setInt(1, id);

    ResultSet rs = ptmt.executeQuery();

    while (rs.next())
    {
      g = new Goddess();
      g.setId(rs.getInt("id"));
      g.setName(rs.getString("name"));
      g.setMobie(rs.getString("mobie"));
      g.setEmail(rs.getString("email"));
      g.setAddress(rs.getString("address"));
    }

    return g;
  }

  /**
   * 添加女神
   * 
   * @throws SQLException
   */
  public void addGoddess(Goddess goddess) throws SQLException
  {
    // 获得数据库连接
    Connection conn = DBUtil.getConnection();

    String sql = "insert into goddess(name,mobie,email,address) values(?,?,?,?)";

    PreparedStatement ptmt = conn.prepareStatement(sql);

    ptmt.setString(1, goddess.getName());
    ptmt.setString(2, goddess.getMobie());
    ptmt.setString(3, goddess.getEmail());
    ptmt.setString(4, goddess.getAddress());

    ptmt.execute();
  }

  /**
   * 修改女神资料
   * 
   * @throws SQLException
   */
  public void updateGoddess(Goddess goddess) throws SQLException
  {
    Connection conn = DBUtil.getConnection();

    String sql = "update goddess set name=?,mobie=?,email=?,address=? where id=?";

    PreparedStatement ptmt = conn.prepareStatement(sql);

    ptmt.setString(1, goddess.getName());
    ptmt.setString(2, goddess.getMobie());
    ptmt.setString(3, goddess.getEmail());
    ptmt.setString(4, goddess.getAddress());

    ptmt.execute();
  }

  /**
   * 删除女神
   * 
   * @throws SQLException
   */
  public void deleteGoddess(Integer id) throws SQLException
  {
    Connection conn = DBUtil.getConnection();

    String sql = "delete from goddess where id=?";

    PreparedStatement ptmt = conn.prepareStatement(sql);

    ptmt.setInt(1, id);

    ptmt.execute();
  }
}

第六步,控制层的实现(控制层在此处用来模仿控制层和界面,直接在这里构建数据,如果是界面的数据则通过请求传递接收参数即可,控制层的代码大家可以根据实际情况去更改完善,这里只是给大家抛砖引玉,做个简单的测试,时间比较紧,希望大家理解),代码如下:

package com.czgo.action;

import java.sql.SQLException;
import java.util.List;

import com.czgo.dao.GoddessDao;
import com.czgo.model.Goddess;

/**
 * 控制层,直接在这里构建数据,界面的数据则通过请求传递接收即可,亦是同理
 * 
 * @author AlanLee
 * 
 */
public class GoddessAction
{
  /**
   * 新增女神
   * 
   * @param goddess
   * @throws Exception
   */
  public void add(Goddess goddess) throws Exception
  {
    GoddessDao dao = new GoddessDao();
    goddess.setName("苍井空");
    goddess.setMobie("52220000");
    goddess.setEmail("52220000@qq.com");
    goddess.setAddress("北京红灯区");
    dao.addGoddess(goddess);
  }

  /**
   * 查询单个女神
   * 
   * @param id
   * @return
   * @throws SQLException
   */
  public Goddess get(Integer id) throws SQLException
  {
    GoddessDao dao = new GoddessDao();
    return dao.queryById(id);
  }

  /**
   * 修改女神
   * 
   * @param goddess
   * @throws Exception
   */
  public void edit(Goddess goddess) throws Exception
  {
    GoddessDao dao = new GoddessDao();
    dao.updateGoddess(goddess);
  }

  /**
   * 删除女神
   * 
   * @param id
   * @throws SQLException
   */
  public void del(Integer id) throws SQLException
  {
    GoddessDao dao = new GoddessDao();
    dao.deleteGoddess(id);
  }

  /**
   * 查询全部女神
   * 
   * @return
   * @throws Exception
   */
  public List<Goddess> query() throws Exception
  {
    GoddessDao dao = new GoddessDao();
    return dao.query();
  }

  /**
   * 测试是否成功
   * 
   * @param args
   * @throws SQLException
   */
  public static void main(String[] args) throws SQLException
  {
    GoddessDao goddessDao = new GoddessDao();

    List<Goddess> goddessList = goddessDao.query();

    for (Goddess goddess : goddessList)
    {
      System.out.println(goddess.getName() + "," + goddess.getMobie() + "," + goddess.getEmail());
    }
  }
}

最后,让我们看一下main方法的运行结果是否成功:

这样,一个简单的java jdbc 连接mysql数据库 实现增删改查便完成了,大家可以在查询的基础上试着去做一个高级查询,也就是多条件查询来巩固jdbc的使用。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持phpstudy。



相关阅读:
苹果Mac OS X系统中怎么设置滚动条始终显示?
简单了解PHP编程中数组的指针的使用
详解Android进程和线程
C#通过委托调用Button单击事件的方法
Win10自动安装游戏应用问题的解决方法
Android应用开发中模拟按下HOME键的效果(实现代码)
js实现的奥运倒计时时钟效果代码
JavaScript 对象字面量讲解
Java数组操作的10大方法
解决mysql5中文乱码问题的方法
C#删除文件夹和文件到回收站示例
子元素div高度不确定时父div高度如何自适应
删除条目时弹出的确认对话框
MySQL可以使用斜线来当字段的名字
快速导航
PHP MySQL HTML CSS JavaScript MSSQL AJAX .NET JSP Linux Mac ASP 服务器 SQL jQuery C# C++ java Android IOS oracle MongoDB SQLite wamp 交通频道 作文范文 迟到的感动 2013教师教学期末工作总结 《世界上最酷的科学书》 小学五年级作文500字:沙土漫天飞 小学五年级作文700字:童年的傻事 实验小学2014——2014学年第二学期班主任工作计划--四年级(6)_班主任工作计划 愤怒的暴雪作文1600字 我做对了作文300字 看孔繁森观后感 前生的你重逢在我今生的世界 有一次你对我说 眉间心上的春天 有一种美丽叫青春作文350字 作文 幻想2383 秋雪寒心 放弃,是另一种成全 转弯处的一眼——父亲无私的爱 2016高二英语教学总结 路灯下的演唱会 清幽静雅似白莲,兀自悠然渡人生 优秀毕业生申请材料 让大海哭的爱作文350字 中元节诗两首 人事部:人事实习报告范文 2006年普通高校招生工作电视讲话 2015送给恋人的新年春节祝福语 十指紧扣,与爱有染 我不愿过星期天 以科学方法指导中职学生管理方式调研建议 星星之火(组诗) 物业总经理岗位KPI指标(表单样式) 国土局两学一做教育实施方案 镇安全生产活动月工作总结 读杜甫《遭田父泥饮,美严中丞》 FrontPage--《网页编辑记》 环境幸福憧憬 关于奥运的英语作文作文700字 开满花儿的窗户作文850字 从哪儿跌倒就从哪儿爬起来作文500字 梦断夜半 户外必备10件套 学校领导班子述职、述廉报告 小学六年级作文800字:感谢你,妈妈 小学语文教师专业技术工作总结 读《环游地球八十天》有感1200字 隔着千年的时光,你是我回不去的原乡 中学教育工作情况汇报 xx县物价局公文办理及保密制度 得分可以让一个人很快乐 当前建设用地供应中存在的问题和对策

Copyright © 2016 phpStudy |