java jdbc銜接mysql數據庫完成增刪改查操作。本站提示廣大學習愛好者:(java jdbc銜接mysql數據庫完成增刪改查操作)文章只能為提供參考,不一定能成為您想要的結果。以下是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的應用。
以上就是本文的全體內容,願望對年夜家的進修有所贊助,也願望年夜家多多支撐。