Jdbc的簡單增刪改查(MYSQL)
今天來寫一篇簡單的jdbc的增刪改查的操作,如果還沒學jdbc的同學可以看一看。個人認爲jdbc的操作比文件簡單多了,學會jdbc之後就不用受文件的苦了(反正我沒用過文件,哈哈)。而且如果做出的項目的數據能夠保存起來,這個項目的逼格立馬高了起來啊。
1、工具準備
首先你需要導一個jar文件,如果你的mysql是5.7版本的,可以用我這個
鏈接:https://pan.baidu.com/s/1wQTkLqd_NniQ9M1hvnIuDw 密碼:20t6
如果不是的話在這個網站下載http://dev.mysql.com/downloads/connector/j/
這裏給一個怎麼在Eclilpse中導入jar包的教程(畢竟這不是重點,看看別人的就行了)
https://jingyan.baidu.com/article/ca41422fc76c4a1eae99ed9f.html
2、創建一個mysql表
CREATE TABLE tb_person
(
name
varchar(10) DEFAULT NULL,
sex
varchar(5) DEFAULT NULL,
age
int(11) DEFAULT NULL,
id
int(11) NOT NULL,
PRIMARY KEY (id
)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
有這個表,就可以把數據放入數據庫了
3、準備工作做完了,就開始進行數據的插入吧
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.sql.Statement;
public class FirstTest {
public static final String URL = "jdbc:mysql://localhost:3306/databaseweb";//databaseweb是我創建的數據庫名稱,前面的東西照着抄就行了
public static final String USER = "root";//抄下來就行
public static final String PASS = "gt1010992686";//數據庫密碼,每個人設置的都不同,要改
private static Connection conn = null;//抄下來就行
public static void main(String[] args) throws SQLException {
try {
Class.forName("com.mysql.jdbc.Driver");//抄下來就行
try {
conn = DriverManager.getConnection(URL,USER,PASS);//抄下來就行
} catch (SQLException e) {
e.printStackTrace();
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
//下面的都是測試數據,怎麼好玩你怎麼設置
int id = 5;
int age = 19;
String name = "yangan";
String sex = "man";
String sql = "insert into tb_person values(?,?,?,?)";//關鍵sql語句,tb_person是這個表 ?代表要插入的數據,就把這個理解成%d就行了
PreparedStatement ptmt = conn.prepareStatement(sql); //抄下來就行
ptmt.setInt(4, id); //把數據插入到數據庫。數字代表第幾個?,需要對應
ptmt.setString(1, name);
ptmt.setString(2, sex);
ptmt.setInt(3, age);
ptmt.execute();//關閉,抄下來就行
}
}
運行代碼(id 1~4是我之前寫好了的,主要關注id 5)
4、那些看不懂的玩意
講解一下那些“抄下來就行”的:URL爲數據庫地址(含端口號),裏面的數據庫名字需要自己進行修改,你創建的數據庫叫啥名字就寫啥。USER就寫上root就行了,PASS就寫上你的數據庫密碼。Connection是一個連接對象,Class.forName(“com.mysql.jdbc.Driver”)是註冊驅動。
conn = DriverManager.getConnection(URL,USER,PASS)就算是建立了和數據庫的連接
用一個String保存sql語句,用PrepareStatement類執行這個sql語句。
再用裏面的set方法,把數據一一放進數據庫,就行了。
5、刪除操作
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class Deletesql {
public static final String URL = "jdbc:mysql://localhost:3306/databaseweb";//databaseweb是數據庫,前面的東西照着抄就行了
public static final String USER = "root";//抄下來就行
public static final String PASS = "gt1010992686";//數據庫密碼
private static Connection conn = null;//抄下來就行
public static void main(String[] args) throws ClassNotFoundException, SQLException {
try {
Class.forName("com.mysql.jdbc.Driver");//抄下來就行
try {
conn = DriverManager.getConnection(URL,USER,PASS);//抄下來就行
} catch (SQLException e) {
e.printStackTrace();
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
String sql = "delete from tb_person where name = ?";//刪除的sql語句
PreparedStatement ptmt = conn.prepareStatement(sql);
String name1 = "yangan";
ptmt.setString(1, name1);
ptmt.execute();
}
}
有木有發現,剛纔插入的那個已經被成功刪除了。
細心的小夥伴應該能發現,這兩段代碼是不是有一大堆相同的部分?而且格式都很固定,如果每次都要寫這個一大堆不是很累麼,程序員要學會偷懶,那麼怎麼偷懶呢?靜態函數可以幫助我們。把相同的部分封裝成一個類,再類裏寫一個靜態函數,直接調用這個類裏面的靜態函數,就可以得到Connection 對象,這樣就可以節省一大堆時間啦
封裝好的類代碼:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class DBUtil {
public static final String URL = "jdbc:mysql://localhost:3306/databaseweb";
public static final String USER = "root";
public static final String PASS = "gt1010992686";
private static Connection conn = null;
static {
try {
Class.forName("com.mysql.jdbc.Driver");
try {
conn = DriverManager.getConnection(URL,USER,PASS);
} catch (SQLException e) {
e.printStackTrace();
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
public static Connection getConnection() {
return conn;//關鍵,其他的都是虛的,上面一大堆,就是爲了這個東西
}
}
6、用封裝好的方法來演示修改數據操作
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class Altersql {
public static void main(String[] args) throws ClassNotFoundException, SQLException {
Connection conn = DBUtil.getConnection();
String sql = "update tb_person set name =? where id = 1";
PreparedStatement ptmt = conn.prepareStatement(sql);
ptmt.setString(1, "yangan");
ptmt.execute();
}
}
淚流滿面有木有,這代碼是不是十分簡單,只要有了這個類,以後只需要寫sql語句就行了
7、查找
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import com.mysql.jdbc.Connection;
public class Test {
public static void main(String[] args) throws SQLException,Exception{
Connection conn = (Connection) DBUtil.getConnection();
Statement stat = conn.createStatement();
String sql = "SELECT * FROM tb_person";
ResultSet rs = stat.executeQuery(sql);
// 輸出查詢結果
while(rs.next()){
System.out.print(rs.getInt("id")+",");
System.out.print(rs.getString("name")+",");
System.out.print(rs.getString("sex")+",");
System.out.print(rs.getInt("age"));
System.out.print("\n");
}
// 關閉
try {
if (rs != null) {
rs.close();
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if (stat != null) {
stat.close();
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if (conn != null) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
}
爲啥這裏用的和上面的執行數據庫語句不同呢?
Statement是一個執行無參數的sql語句的類,既然查找這條語句沒有參數,那麼就可以使用這個類。
ResultSet是結果集,用來返回在數據庫中存放的結果,然後用get方法,把結果取出來。
.next方法可以向後移動。相當於遍歷結果集。
8、總結
這就是簡單的數據庫jdbc操作了,從這裏可以看出,其實連接數據庫的方法是很固定的,基本上代碼可以說都差不多。靈活的地方在與sql語句,知道更多的sql語句可以用更多的方法對數據庫進行操作,這纔是關鍵。最後附上java核心技術2的pdf,有興趣的小夥伴可以下載下來看一下里面的jdbc是怎麼講的,希望對大家能有一點點的幫助。O(∩_∩)O哈哈
鏈接:https://pan.baidu.com/s/1MpNnDZ64qXhwou6sLeIYjw 密碼:9b1b