最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java jdbc連接mysql數(shù)據(jù)庫(kù)實(shí)現(xiàn)增刪改查操作

 更新時(shí)間:2016年07月10日 10:55:00   作者:Alan丶Lee  
這篇文章主要為大家詳細(xì)介紹了java jdbc連接mysql數(shù)據(jù)庫(kù)實(shí)現(xiàn)增刪改查操作,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

jdbc相信大家都不陌生,只要是個(gè)搞java的,最初接觸j2ee的時(shí)候都是要學(xué)習(xí)這么個(gè)東西的,誰(shuí)叫程序得和數(shù)據(jù)庫(kù)打交道呢!而jdbc就是和數(shù)據(jù)庫(kù)打交道非?;A(chǔ)的一個(gè)知識(shí),也是比較接近底層的,在實(shí)際的工作中大家用得更多的其實(shí)還是比較成熟的框架,例如Hibernate、Mybatis。

但是作為這些成熟框架的底層的jdbc卻也是我們應(yīng)該去掌握的,只有了解了jdbc的增刪改查,這樣在以后如果有興趣去研究Hibernate或者M(jìn)ybatis的源代碼的時(shí)候才能更好的去理解這些成熟的框架是如何去實(shí)現(xiàn)增刪改查的。

回歸正題,先來(lái)看看我們的開(kāi)發(fā)環(huán)境:

Java語(yǔ)言、Eclipse開(kāi)發(fā)工具、Mysql數(shù)據(jù)庫(kù)、Navicat數(shù)據(jù)庫(kù)可視化工具。 

開(kāi)發(fā)環(huán)境的安裝搭建及使用請(qǐng)自己查閱資料(很簡(jiǎn)單的),這里不詳細(xì)闡述。 

第一步,創(chuàng)建數(shù)據(jù)庫(kù),利用Navicat數(shù)據(jù)庫(kù)可視化工具隨便建立一個(gè)數(shù)據(jù)庫(kù),在庫(kù)中建立一張表,表里給幾個(gè)字段(記得給個(gè)id字段,唯一主鍵,自增序列),再隨便給上兩條數(shù)據(jù)便好,用來(lái)測(cè)試功能,如圖: 

第二步,打通數(shù)據(jù)庫(kù)(這個(gè)例子希望大家自己動(dòng)手敲敲,耽誤不了多少時(shí)間,熟悉一下jdbc如何和數(shù)據(jù)庫(kù)打交道,故以圖示之),如圖:

第三步,改造DBUtil類,方便在dao層獲得數(shù)據(jù)庫(kù)的連接,代碼如下:

 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.加載驅(qū)動(dòng)程序
   Class.forName("com.mysql.jdbc.Driver");
   // 2.獲得數(shù)據(jù)庫(kù)的連接
   conn = DriverManager.getConnection(URL, UNAME, PWD);
  }
  catch (ClassNotFoundException e)
  {
   e.printStackTrace();
  }
  catch (SQLException e)
  {
   e.printStackTrace();
  }
 }

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

第四步,創(chuàng)建實(shí)體類(如上圖,大家觀察包的分配,我們將采用MVC思想設(shè)計(jì)本實(shí)例,有關(guān)于mvc的設(shè)計(jì)思想,請(qǐng)大家自行學(xué)習(xí),這里不多說(shuō))代碼如下:

package com.czgo.model;

import java.io.Serializable;

/**
 * 實(shí)體類:女神類
 * 
 * @author AlanLee
 * 
 */
public class Goddess implements Serializable
{
 private static final long serialVersionUID = 1L;

 /**
  * 唯一主鍵
  */
 private Integer id;
 /**
  * 姓名
  */
 private String name;
 /**
  * 手機(jī)號(hào)碼
  */
 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層的實(shí)現(xiàn)(這里由于是小例子沒(méi)有寫(xiě)dao接口,實(shí)際工作中大型項(xiàng)目應(yīng)該是要寫(xiě)dao接口的,便于程序的維護(hù)和擴(kuò)展),代碼如下:

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;

/**
 * 數(shù)據(jù)層處理類
 * 
 * @author AlanLee
 * 
 */
public class GoddessDao
{
 /**
  * 查詢?nèi)颗?
  * 
  * @return
  * @throws SQLException
  */
 public List<Goddess> query() throws SQLException
 {
  List<Goddess> goddessList = new ArrayList<Goddess>();

  // 獲得數(shù)據(jù)庫(kù)連接
  Connection conn = DBUtil.getConnection();

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

  // 通過(guò)數(shù)據(jù)庫(kù)的連接操作數(shù)據(jù)庫(kù),實(shí)現(xiàn)增刪改查
  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;
 }

 /**
  * 查詢單個(gè)女神
  * 
  * @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
 {
  // 獲得數(shù)據(jù)庫(kù)連接
  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();
 }
}

第六步,控制層的實(shí)現(xiàn)(控制層在此處用來(lái)模仿控制層和界面,直接在這里構(gòu)建數(shù)據(jù),如果是界面的數(shù)據(jù)則通過(guò)請(qǐng)求傳遞接收參數(shù)即可,控制層的代碼大家可以根據(jù)實(shí)際情況去更改完善,這里只是給大家拋磚引玉,做個(gè)簡(jiǎn)單的測(cè)試,時(shí)間比較緊,希望大家理解),代碼如下:

package com.czgo.action;

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

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

/**
 * 控制層,直接在這里構(gòu)建數(shù)據(jù),界面的數(shù)據(jù)則通過(guò)請(qǐng)求傳遞接收即可,亦是同理
 * 
 * @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("北京紅燈區(qū)");
  dao.addGoddess(goddess);
 }

 /**
  * 查詢單個(gè)女神
  * 
  * @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);
 }

 /**
  * 查詢?nèi)颗?
  * 
  * @return
  * @throws Exception
  */
 public List<Goddess> query() throws Exception
 {
  GoddessDao dao = new GoddessDao();
  return dao.query();
 }

 /**
  * 測(cè)試是否成功
  * 
  * @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方法的運(yùn)行結(jié)果是否成功:

這樣,一個(gè)簡(jiǎn)單的java jdbc 連接mysql數(shù)據(jù)庫(kù) 實(shí)現(xiàn)增刪改查便完成了,大家可以在查詢的基礎(chǔ)上試著去做一個(gè)高級(jí)查詢,也就是多條件查詢來(lái)鞏固jdbc的使用。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Javaweb 500 服務(wù)器內(nèi)部錯(cuò)誤的解決

    Javaweb 500 服務(wù)器內(nèi)部錯(cuò)誤的解決

    這篇文章主要介紹了Javaweb 500 服務(wù)器內(nèi)部錯(cuò)誤的解決方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-09-09
  • Java上傳文件圖片到服務(wù)器的方法

    Java上傳文件圖片到服務(wù)器的方法

    這篇文章主要為大家詳細(xì)介紹了Java上傳文件圖片到服務(wù)器的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • Java中字符串的一些常見(jiàn)方法分享

    Java中字符串的一些常見(jiàn)方法分享

    這篇文章主要介紹了Java中字符串的一些常見(jiàn)方法,需要的朋友可以參考下
    2014-02-02
  • Java實(shí)現(xiàn)MapStruct對(duì)象轉(zhuǎn)換的示例代碼

    Java實(shí)現(xiàn)MapStruct對(duì)象轉(zhuǎn)換的示例代碼

    本文主要介紹了MapStruct在Java中的對(duì)象轉(zhuǎn)換使用方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-12-12
  • Triple協(xié)議支持Java異?;貍髟O(shè)計(jì)實(shí)現(xiàn)詳解

    Triple協(xié)議支持Java異常回傳設(shè)計(jì)實(shí)現(xiàn)詳解

    這篇文章主要為大家介紹了Triple協(xié)議支持Java異?;貍髟O(shè)計(jì)實(shí)現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-12-12
  • SpringBoot?中使用?Validation?校驗(yàn)參數(shù)的方法詳解

    SpringBoot?中使用?Validation?校驗(yàn)參數(shù)的方法詳解

    Validation?是用于檢查程序代碼中參數(shù)的有效性的框架,作為?Spring?框架中的一個(gè)參數(shù)校驗(yàn)工具,集成在?spring-context?包中,這篇文章主要介紹了SpringBoot?中使用?Validation?校驗(yàn)參數(shù),需要的朋友可以參考下
    2022-05-05
  • mybatis-plus多表關(guān)聯(lián)查詢功能的實(shí)現(xiàn)

    mybatis-plus多表關(guān)聯(lián)查詢功能的實(shí)現(xiàn)

    本文給大家介紹mybatis-plus多表關(guān)聯(lián)查詢功能的實(shí)現(xiàn)代碼,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2021-11-11
  • Java實(shí)現(xiàn)暴力匹配算法

    Java實(shí)現(xiàn)暴力匹配算法

    暴力匹配算法是一種簡(jiǎn)單的字符串匹配算法,本文主要介紹了Java實(shí)現(xiàn)暴力匹配算法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • maven子模塊相互依賴打包時(shí)報(bào)錯(cuò)找不到類的解決方案

    maven子模塊相互依賴打包時(shí)報(bào)錯(cuò)找不到類的解決方案

    本文主要介紹了maven子模塊相互依賴打包時(shí)報(bào)錯(cuò)找不到類的解決方案,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • java中將一個(gè)List等分成n個(gè)list的工具方法(推薦)

    java中將一個(gè)List等分成n個(gè)list的工具方法(推薦)

    下面小編就為大家?guī)?lái)一篇java中將一個(gè)List等分成n個(gè)list的工具方法(推薦)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-03-03

最新評(píng)論

沭阳县| 天气| 肥西县| 樟树市| 三门峡市| 海南省| 凤阳县| 宁安市| 桑日县| 瑞安市| 马关县| 磐安县| 体育| 江安县| 鹰潭市| 昆明市| 神池县| 祁阳县| 鄂尔多斯市| 鹰潭市| 隆安县| 灵武市| 龙泉市| 博兴县| 平乐县| 邻水| 伊宁县| 定州市| 洮南市| 阿坝县| 云龙县| 牟定县| 禄丰县| 隆德县| 伊宁市| 乌拉特前旗| 甘谷县| 漠河县| 苏尼特左旗| 阿尔山市| 缙云县|