Java語言實(shí)現(xiàn)對(duì)MySql數(shù)據(jù)庫中數(shù)據(jù)的增刪改查操作的代碼
簡(jiǎn)單說操作的步驟:
1.連接數(shù)據(jù)庫
2.將SQL語句發(fā)送到數(shù)據(jù)庫
3.執(zhí)行SQL語句
這里舉個(gè)例子:
在一個(gè)數(shù)據(jù)庫中有個(gè)students表,表中有學(xué)號(hào)(Id),姓名(Name),性別(Sex),地址(Address),電話(Phone),專業(yè)(Dept)。
這里把這個(gè)表寫成一個(gè)學(xué)生信息類(Info_student)
(請(qǐng)先確??戳死诱f明,不然代碼有的地方可能看不明白)
要實(shí)現(xiàn)操縱我們首先得連接數(shù)據(jù)庫,因?yàn)槊總€(gè)操作都要進(jìn)行連接操作,所以我們直接把連接的操作封裝在一個(gè)類中,需要連接的時(shí)候直接調(diào)用可。
數(shù)據(jù)庫連接類:
import java.sql.Connection;
import java.sql.DriverManager;
public class DB_Helper {
public static Connection connect = null;
static {
try {
Class.forName("com.mysql.jdbc.Driver"); // 加載MYSQL JDBC驅(qū)動(dòng)程序
// 觀察以下2個(gè)語句的差別,
// connect =
// DriverManager.getConnection("jdbc:mysql://localhost:3306/students", "root", "");
connect = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/students?useUnicode=true&characterEncoding=utf-8", "root", "");
System.out.println("Success loading Mysql Driver!");
} catch (Exception e) {
System.out.print("Error loading Mysql Driver!");
e.printStackTrace();
}
}
public static Connection getConnection() {
return connect;
}
}
數(shù)據(jù)庫已經(jīng)連接了,那么接下來就是要發(fā)送SQL語句和執(zhí)行語句。
發(fā)送語句用到了PreparedStatement對(duì)象和Connection對(duì)象的操作prepareStatement()
執(zhí)行語句用到PreparedStatement對(duì)象的操作execute()
提示:以下是一些對(duì)象的說明,可以先看代碼,遇到的時(shí)候再回來看。
************************
PreparedStatement
表示預(yù)編譯的 SQL 語句的對(duì)象。
SQL 語句被預(yù)編譯并存儲(chǔ)在 PreparedStatement 對(duì)象中。然后可以使用此對(duì)象多次高效地執(zhí)行該語句。
*************************
Connection
與特定數(shù)據(jù)庫的連接(會(huì)話)。在連接上下文中執(zhí)行 SQL 語句并返回結(jié)果。
Connection 對(duì)象的數(shù)據(jù)庫能夠提供描述其表、所支持的 SQL 語法、存儲(chǔ)過程、此連接功能等等的信息。
**********************
以下代碼是要實(shí)現(xiàn)在數(shù)據(jù)庫中實(shí)現(xiàn)學(xué)生信息的增刪改查操作。
一、增
public void add(Info_student student) throws SQLException{
// 與特定數(shù)據(jù)庫的連接(會(huì)話)。
Connection conn = (Connection) DB_Helper.getConnection();
String sql = "insert into student(Sno,Sname,Ssex,Saddress,Sphone,Sdept) values(?,?,?,?,?,?)";
// 創(chuàng)建一個(gè) PreparedStatement 對(duì)象來將參數(shù)化的 SQL 語句發(fā)送到數(shù)據(jù)庫。
PreparedStatement ptmt = (PreparedStatement) conn.prepareStatement(sql);
/*
* void setBigDecimal(int parameterIndex,BigDecimal x)throws SQLException
* 將指定參數(shù)設(shè)置為給定 Java String 值。在將此值發(fā)送給數(shù)據(jù)庫時(shí),驅(qū)動(dòng)程序?qū)⑺D(zhuǎn)換成一個(gè) SQL VARCHAR
* 或 LONGVARCHAR 值(取決于該參數(shù)相對(duì)于驅(qū)動(dòng)程序在 VARCHAR 值上的限制的大?。?。
*/
ptmt.setString(1, student.getId());
ptmt.setString(2, student.getName());
ptmt.setString(3, student.getSex());
ptmt.setString(4, student.getAddress());
ptmt.setString(5, student.getPhone());
ptmt.setString(6, student.getDept());
// 在此 PreparedStatement 對(duì)象中執(zhí)行 SQL 語句
ptmt.execute();
}
二、刪
public void delete(String id) throws SQLException{
Connection conn = (Connection) DB_Helper.getConnection();
String sql = "delete from student where Sno=?";
PreparedStatement ptmt = (PreparedStatement) conn.prepareStatement(sql);
ptmt.setString(1, id);
ptmt.execute();
}
三、改
public void update(Info_student student) throws SQLException{
Connection conn = (Connection) DB_Helper.getConnection();
String sql = "update student set Sname=?,Ssex=?,Saddress=?,Sphone=?,Sdept=? where Sno=?";
PreparedStatement ptmt = (PreparedStatement) conn.prepareStatement(sql);
ptmt.setString(1, student.getName());
ptmt.setString(2, student.getSex());
ptmt.setString(3, student.getAddress());
ptmt.setString(4, student.getPhone());
ptmt.setString(5, student.getDept());
ptmt.setString(6, student.getId());
ptmt.execute();
}
四、查
public Info_student search(String id) throws SQLException{
Info_student student = null;
Connection conn = (Connection) DB_Helper.getConnection();
String sql = "select * from student where Sno=?";
PreparedStatement ptmt = (PreparedStatement) conn.prepareStatement(sql);
ptmt.setString(1, id);
/*
* ResultSet executeQuery()throws SQLException
* 在此 PreparedStatement 對(duì)象中執(zhí)行 SQL 查詢,并返回該查詢生成的 ResultSet 對(duì)象。
*/
/*
* public interface ResultSet extends Wrapper
* 表示數(shù)據(jù)庫結(jié)果集的數(shù)據(jù)表,通常通過執(zhí)行查詢數(shù)據(jù)庫的語句生成。 ResultSet 對(duì)象具有指向其當(dāng)前數(shù)據(jù)行的光標(biāo)。
* 最初,光標(biāo)被置于第一行之前。next 方法將光標(biāo)移動(dòng)到下一行;因?yàn)樵摲椒ㄔ?ResultSet 對(duì)象沒有下一行時(shí)
* 返回 false,所以可以在 while 循環(huán)中使用它來迭代結(jié)果集。
*
*/
ResultSet rs = ptmt.executeQuery();
/*
* boolean next()throws SQLException
* 將光標(biāo)從當(dāng)前位置向前移一行。
* ResultSet 光標(biāo)最初位于第一行之前;
* 第一次調(diào)用 next 方法使第一行成為當(dāng)前行;
* 第二次調(diào)用使第二行成為當(dāng)前行,依此類推。
*/
while(rs.next()){
student = new Info_student();
student.setId(rs.getString("Sno"));
student.setName(rs.getString("Sname"));
student.setSex(rs.getString("Ssex"));
student.setAddress(rs.getString("Saddress"));
student.setPhone(rs.getString("Sphone"));
student.setDept(rs.getString("Sdept"));
}
return student;
}
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
JAVA時(shí)間存儲(chǔ)類Period和Duration使用詳解
這篇文章主要為大家介紹了JAVA時(shí)間存儲(chǔ)類Period和Duration使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-09-09
Java實(shí)戰(zhàn)在線選課系統(tǒng)的實(shí)現(xiàn)流程
讀萬卷書不如行萬里路,只學(xué)書上的理論是遠(yuǎn)遠(yuǎn)不夠的,只有在實(shí)戰(zhàn)中才能獲得能力的提升,本篇文章手把手帶你用java+SSM+jsp+mysql+maven實(shí)現(xiàn)一個(gè)在線選課系統(tǒng),大家可以在過程中查缺補(bǔ)漏,提升水平2021-11-11
詳解Java中static關(guān)鍵字和內(nèi)部類的使用
這篇文章主要為大家詳細(xì)介紹了Java中static關(guān)鍵字和內(nèi)部類的使用,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2022-08-08
使用maven?shade插件解決項(xiàng)目版本沖突詳解
這篇文章主要為大家介紹了使用maven?shade插件解決項(xiàng)目版本沖突詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-09-09
IntelliJ IDEA修改內(nèi)存大小,使得idea運(yùn)行更流暢
今天小編就為大家分享一篇關(guān)于IntelliJ IDEA修改內(nèi)存大小,使得idea運(yùn)行更流暢的文章,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧2018-10-10
Java mockito單元測(cè)試實(shí)現(xiàn)過程解析
這篇文章主要介紹了Java mockito單元測(cè)試實(shí)現(xiàn)過程解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-08-08
SpringBoot中yml的數(shù)據(jù)綁定示例
本文主要介紹了SpringBoot中yml的數(shù)據(jù)綁定示例,借助于YAML的簡(jiǎn)潔語法和結(jié)構(gòu)化特性,我們能夠輕松地管理應(yīng)用程序的配置信息,使得配置文件更加清晰易讀,感興趣的可以了解一下2023-11-11
SpringBoot使用Mybatis&Mybatis-plus文件映射配置方法
這篇文章主要介紹了SpringBoot使用Mybatis&Mybatis-plus文件映射配置方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-05-05

