java創建mysql驅動,JDBC之Java連接mysql實現增刪改查

使用軟件:mysql、eclipse

鏈接步驟:

1.注冊驅動

2.創建一個連接對象

3.寫sql語句

4.執行sql語句并返回一個結果或者結果集

5.關閉鏈接(一般就是connection、statement、setresult)這三個連接對象,關閉順序一般是(setresult? ? --->? statement? -->? setresult? )

一、直接連接方法:(這種方法就是講sql語句和結果所有的步驟寫在一起) 不建議使用該方法

1 public static voidmain(String[] args) {2 String url = "jdbc:mysql://localhost:3306/students";3 String user = "root";4 String password = "admin";5 Connection conn = null;6 Statement st = null;7

8 try{9 //1. 注冊驅動

10 Class.forName("com.mysql.jdbc.Driver");11 //2. 創建一個鏈接對象

12 conn =DriverManager.getConnection(url,user,password);13 //3. 創建一個sql語句的發送命令對象

14 String sql = "insert into student values('2001','Tom','20','7000')";15 st=conn.createStatement();16 //4. 執行sql語句,拿到查詢的結果集對象

17 st.executeQuery(sql);20 } catch(Exception e) {21 e.printStackTrace();22 }finally{23 //5. 關閉鏈接 ,命令對象 ,結果集

24 if(st != null) {25 try{26 st.close();27 } catch(Exception e) {28 e.printStackTrace();29 }30 }31 if(conn != null) {32 try{33 conn.close();34 } catch(Exception e) {35 e.printStackTrace();36 }37 }38 }

二、建立工具類方法,將必要的幾步寫一個類,使用的時候直接調用(建議使用)

1.注冊驅動、創建連接對象、關閉資源? ? 這三部一般可以寫一個類,由于寫sql語句和執行sql語句的結果不一致,所以可以將其在用到的時候在寫

2.一般寫工具類都是寫成靜態方法,以方便調用

//這是工具類:

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.ResultSet;

import java.sql.Statement;

public class JdbcUtils {

private static String driverName = "com.mysql.jdbc.Driver";

private static String url = "jdbc:mysql://localhost:3306/student_achievement_system";

private static String user = "root";

private static String password = "admin";

/**

* 鏈接數據庫

*/

static {

try {

Class.forName(JdbcUtils.driverName);

} catch (Exception e) {

e.printStackTrace();

}

}

/**

* 獲取鏈接對象connection

* @return

*/

public static Connection getConnection() {

try {

return DriverManager.getConnection(JdbcUtils.url, JdbcUtils.user, JdbcUtils.password);

} catch (Exception e) {

e.printStackTrace();

}

return null;

}

/**

* 關閉資源

* @param conn

* @param st

* @param rs

*/

public static void close(Connection conn,Statement st,ResultSet rs) {

if(rs != null) {

try {

rs.close();

} catch (Exception e) {

e.printStackTrace();

}

}

if(st != null) {

try {

st.close();

} catch (Exception e) {

e.printStackTrace();

}

}

if(conn != null) {

try {

conn.close();

} catch (Exception e) {

e.printStackTrace();

}

}

}

}

//這是對數據庫的基本操作類

// 增加、刪除、更新、查找一條、查找所有的方法

public class StudentsDaoImpl implements IStudentsDao {

//增加

@Override

public int save(Students student) {

Connection conn = null;

PreparedStatement ps = null;

try {

conn = JdbcUtils.getConnection();

String sql = "insert into students values(?,?,?,?,?,?)";

ps = conn.prepareStatement(sql);

ps.setInt(1, student.getStudentId());

ps.setString(2, student.getStudentName());

ps.setString(3, student.getSex());

ps.setString(4, student.getPhoneNo());

ps.setString(5, student.getAddress());

ps.setDate(6, (Date) student.getBirthday());

int row = ps.executeUpdate();

return row;

} catch (Exception e) {

e.printStackTrace();

}finally {

JdbcUtils.close(conn, ps, null);

}

return 0;

}

//刪除

@Override

public int delete(int studentId) {

Connection conn = null;

PreparedStatement ps = null;

try {

conn = JdbcUtils.getConnection();

String sql = "delete from students where studentId=?";

ps = conn.prepareStatement(sql);

ps.setInt(1, studentId);

int row = ps.executeUpdate();

return row;

} catch (Exception e) {

e.printStackTrace();

}finally {

JdbcUtils.close(conn, ps, null);

}

return 0;

}

//更新

@Override

public int update(int studentId, Students student) {

Connection conn = null;

PreparedStatement ps = null;

try {

conn = JdbcUtils.getConnection();

String sql = "update students set studentName=?,sex=?,phoneNo=?,address=?,birthday=? where studentId=?";

ps = conn.prepareStatement(sql);

ps.setString(1, student.getStudentName());

ps.setString(2, student.getSex());

ps.setString(3, student.getPhoneNo());

ps.setString(4, student.getAddress());

ps.setDate(5, ((Date) student.getBirthday()));

ps.setInt(6, studentId);

int row = ps.executeUpdate();

return row;

} catch (Exception e) {

e.printStackTrace();

}finally {

JdbcUtils.close(conn, ps, null);

}

return 0;

}

//查找一條數據

@Override

public Students getByStudentId(int studentId) {

Connection conn = null;

PreparedStatement ps = null;

ResultSet rs = null;

try {

conn = JdbcUtils.getConnection();

String sql = "select * from students where studentId=?";

ps = conn.prepareStatement(sql);

ps.setInt(1, studentId);

rs = ps.executeQuery();

if(rs.next()) {

Students student = new Students();

student.setStudentId(rs.getInt("studentId"));

student.setStudentName(rs.getString("studentName"));

student.setSex(rs.getString("sex"));

student.setPhoneNo(rs.getString("phoneNo"));

student.setAddress(rs.getString("address"));

student.setBirthday(rs.getDate("birthday"));

return student;

}

} catch (Exception e) {

e.printStackTrace();

}finally {

JdbcUtils.close(conn, ps, rs);

}

return null;

}

//查找所有數據

@Override

public List getAll() {

Connection conn = null;

PreparedStatement ps = null;

ResultSet rs = null;

try {

conn = JdbcUtils.getConnection();

String sql = "select * from students";

ps = conn.prepareStatement(sql);

rs = ps.executeQuery();

List studentsList = new ArrayList<>();

while(rs.next()) {

Students student = new Students();

student.setStudentId(rs.getInt("studentId"));

student.setStudentName(rs.getString("studentName"));

student.setSex(rs.getString("sex"));

student.setPhoneNo(rs.getString("phoneNo"));

student.setAddress(rs.getString("address"));

student.setBirthday(rs.getDate("birthday"));

studentsList.add(student);

}

return studentsList;

} catch (Exception e) {

e.printStackTrace();

}finally {

JdbcUtils.close(conn, ps, rs);

}

return null;

}

}

內容來源于網絡如有侵權請私信刪除

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/395654.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/395654.shtml
英文地址,請注明出處:http://en.pswp.cn/news/395654.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

算法第五章作業

1.你對回溯算法的理解&#xff08;2分&#xff09; 回溯法&#xff08;探索與回溯法&#xff09;是一種選優搜索法&#xff0c;又稱為試探法&#xff0c;按選優條件向前搜索&#xff0c;以達到目標。但當探索到某一步時&#xff0c;發現原先選擇并不優或達不到目標&#xff0c;…

c++編碼風格指南_100%正確的編碼樣式指南

c編碼風格指南Here are three links worth your time:這是三個值得您花費時間的鏈接&#xff1a; The 100% correct coding style guide (4 minute read) 100&#xff05;正確的編碼樣式指南( 閱讀4分鐘 ) I wrote a programming language. Here’s how you can, too (10 minu…

xp開機黑屏故障分析

今天裝完xp系統之后&#xff0c;重啟開機發現竟然黑屏了&#xff0c;查資料發現有很多用戶在修改分辨率后&#xff0c;因顯示器不支持修改后的分辨率&#xff0c;會出現電腦黑屏的情況。分辨率調高了&#xff0c;超出了屏幕的范圍&#xff0c;肯定會黑屏&#xff0c;而且這個問…

應用程序圖標_如何制作完美的應用程序圖標

應用程序圖標by Nabeena Mali通過Nabeena Mali 如何制作完美的應用程序圖標 (How to Make the Perfect App Icon) With just 24 app icon slots on the first page of an iPhone home screen, or 28 if you have a fancy iPhone 7, creating the perfect app icon is a vital …

Luogu3702 SDOI2017 序列計數 矩陣DP

傳送門 不考慮質數的條件&#xff0c;可以考慮到一個很明顯的$DP:$設$f_{i,j}$表示選$i$個數&#xff0c;和$mod\ pj$的方案數&#xff0c;顯然是可以矩陣優化$DP$的。 而且轉移矩陣是循環矩陣&#xff0c;所以可以只用第一行的數字代替整個矩陣。當然了這道題$p \leq 100$矩陣…

java閏年的年份,Java案例-判斷給定年份是閏年

專注學子高考志愿填報&#xff0c;分享你所不知道信息。Java案例-判斷給定年份是閏年案例描述編寫程序&#xff0c;判斷給定的某個年份是否是閏年。閏年的判斷規則如下&#xff1a;(1)若某個年份能被4整除但不能被100整除&#xff0c;則是閏年。(2)若某個年份能被400整除&#…

通過path繪制點擊區域

通過path繪制點擊區域 效果 源碼 https://github.com/YouXianMing/Animations // // TapDrawImageView.h // TapDrawImageView // // Created by YouXianMing on 16/5/9. // Copyright © 2016年 YouXianMing. All rights reserved. //#import <UIKit/UIKit.h> #…

Raft與MongoDB復制集協議比較

在一文搞懂raft算法一文中&#xff0c;從raft論文出發&#xff0c;詳細介紹了raft的工作流程以及對特殊情況的處理。但算法、協議這種偏抽象的東西&#xff0c;僅僅看論文還是比較難以掌握的&#xff0c;需要看看在工業界的具體實現。本文關注MongoDB是如何在復制集中使用raft協…

db2 前滾會話

前滾會話 - CLP 示例ROLLFORWARD DATABASE 命令允許每次指定多個操作&#xff0c;各個操作由關鍵字 AND 隔開。例如&#xff0c;要前滾至日志末尾&#xff0c;然后完成&#xff0c;可將下列獨立的命令&#xff1a;db2 rollforward db sample to end of logsdb2 rollforward db …

史上最爛代碼_歷史上最大的代碼庫

史上最爛代碼Here’s a diagram of the biggest codebases in history, as measured by lines of code:這是歷史上最大的代碼庫的圖表&#xff0c;以代碼行來衡量&#xff1a; As you can see, Google has by far the largest codebase of all. And all 2 billion lines of co…

php添加jpeg,PHP-如何將JPEG圖像保存為漸進JPEG?

我具有以下將JPEG保存為漸進JPEG的功能.它已保存,但不是漸進式JPEG.這個對嗎 &#xff1f;function save($filename, $image_type IMAGETYPE_JPEG, $compression 75, $permissions null) {if ($image_type IMAGETYPE_JPEG) {imageinterlace($this->image, true); //conv…

Mysql添加字段.md

alter table td_user add gender bit DEFAULT 0 COMMENT 性別; 轉載于:https://www.cnblogs.com/bihanghang/p/10167446.html

推薦兩款實用工具——hcache和SQLPad

hcacheLinux用戶可能經常遇到的一個問題是內存大部分都被Buff和Cache占用了&#xff0c;但是有時候我們想知道到底Cache了些什么內容卻沒有一個直觀好用的工具。今天給你介紹一個可以查看Linux當前緩存了哪些文件的小工具hcache。hcache是基于pcstat的&#xff0c;pcstat可以查…

如何構建設計系統

by Colm Tuite通過Colm Tuite 如何構建設計系統 (How to construct a design system) 設計和構建一致的設計系統的技巧。 (Tips for designing and building a consistent design system.) Without doubt, I get asked about design systems more than anything else. So, hav…

matlab中get和set命令,關于matlab中get和set的用法

求極值點我現在知道有兩種方法&#xff1a;建立一個fun.m文件&#xff1a;function fxfun(x)fxsin(x)然后在命令窗口中調用&#xff1a;zfmax(fun,[0,pi/2])%同樣的函數還有zfmin(fun,...[0,pi/2]),zfzero(fun,0.5).zfsolve(fun,x0,option)...方程組求解&#xff0c;x0是求根過…

jmeter學習筆記(一)

1.添加JSON Path Extractor >>下載地址&#xff1a;http://jmeter-plugins.org/downloads/all/&#xff0c;下載 JMeterPlugins-ExtrasLibs-X.X.X.zip下載 >>解壓&#xff0c;將lib和lib/ext中的jar包放到安裝目錄對應位置&#xff0c;重啟。 2.參數不能輸入中文&…

docker mysql.sock,Docker mysql主從配置

Docker mysql主從配置一&#xff1a;Mysql基于Docker的主從復制搭建1&#xff1a;安裝docker&#xff0c;安裝步驟可見我之前的文章&#xff1a;Docker-常用基建的安裝與部署docker ps 命令查詢當前的容器狀態&#xff0c;這就是我們最后要達到的效果。2&#xff1a;首先拉取my…

神秘的數組初始化_圖像識別神秘化

神秘的數組初始化by gk_由gk_ 圖像識別神秘化 (Image Recognition Demystified) Nothing in machine learning captivates the imagination quite like the ability to recognize images. Identifying imagery must connote “intelligence,” right? Let’s demystify.機器學…

css中的定位問題

1、position的四種常見屬性值 static&#xff1a;元素框正常生成&#xff0c;塊元素生成一個正常矩形塊&#xff0c;行內元素則會創建一個或多個行框&#xff0c;置于父元素內。 relative&#xff1a;相對定位&#xff0c;是相對于自己本來應該在的位置&#xff08;static 定位…

【公眾號系列】SAP S/4 HANA的移動平均價

公眾號&#xff1a;SAP Technical本文作者&#xff1a;matinal原文出處&#xff1a;http://www.cnblogs.com/SAPmatinal/ 原文鏈接&#xff1a;【公眾號系列】SAP S/4 HANA的移動平均價寫在前面 我在前面寫了很多篇關于SAP S/4 HANA的新變化&#xff0c;并且多次提及了在財務模…