Jdbc的簡單增刪改查(MYSQL)

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章