JDBC 加載mysql數據庫驅動


第一步:下載 mysq l驅動

 


Connector/J 就是為Java 的JDBC准備的


 



下載完畢后,解壓后,會看見如下圖的就是mysql驅動的 jar 包:


 


(二)打開Eclipse,新建java工程,然后新建一個文件夾(改名為lib)

 



然后把 mysql驅動的jar包 復制到該文件夾下:(點擊新建的文件夾ctrl+v粘貼就行)


 


(三)對 mysql的驅動 jar包 右鍵,把他加入到工程

 




出現下圖時,則完成操作.

一、前言:

     之前的一篇筆記是關於安裝MySQL數據庫和SQLyog數據庫可視化工具的教程(該教程連接),下面寫一下如何使用mysql_connector連接數據庫並且對數據進行刪、增、查、改等操作。
二、實現步驟:

1、首先要使用mysql_connector驅動包的話需要加添加mysql_connector驅動包,因為java本身是沒有mysql_connector驅動包的,我們需要在網上下載mysql_connector驅動包添加到程序的添加庫中,這是我用的mysql_connector驅動包的版本下載鏈接:https://download.csdn.net/download/sdbx_lyp/10396071。下載好驅動包以后,新建java project:按下圖所示步驟添加mysql_connector驅動包:

 



然后選擇mysql_connector驅動包添加。

2、添加完成后剩下的就是寫代碼了:

    public class DataBase {
     
        public static void main(String[] args) {
            int numbefore = 0;
            Connection con = null;//鏈接接口
            Statement stmt = null;//發送SQL語句接口
            ResultSet rs = null;//返回結果集接口
            PreparedStatement ps = null;
            FileInputStream fis;  
            try {
                //加載驅動
                Class.forName("com.mysql.jdbc.Driver");
                //連接方法一
                /*String url = "jdbc:mysql://127.0.0.1:3306/students";//127.0.0.1可以改成localhost,表示本地主機。
                String username = "root";
                String password = "123";
                con = DriverManager.getConnection(url,username,password);*/
                
                //連接方法二,useUnicode=true&characterEncoding=UTF-8是設置編碼方式
                String URL ="jdbc:mysql://127.0.0.1:3306/students?user=root&password=123&useUnicode=true&characterEncoding=UTF-8";
                con = DriverManager.getConnection(URL);
                
                //如果連接成功打印con不為空
                System.out.println(con);
                stmt = con.createStatement();
                //con.close();
                
                //查詢數據庫中表的值,並且打印出來
                rs = stmt.executeQuery("select * from  students_1");
                while(rs.next()) { //next()方法控制行數,一行一行讀出返回結果集,直到null
                    int id = rs.getInt("id");//獲取id這一列的數據
                    String name = rs.getString(2);//獲取第二列數據
                    String sex = rs.getString("sex");
                    int age = rs.getInt("age");
                    System.out.println("編號="+id+",姓名="+name+",性別="+sex+",年齡="+age);
                    //計算表中數據的行數
                    numbefore = numbefore + 1;
                }
                
                //打印出操作數據前的行數
                System.out.println("操作前數據為"+numbefore+"行");
                
                //添加圖片數據
                 File image = new File("C:/Users/lyp/Pictures/桌面背景/1.jpg");  //添加圖片的路徑
                 ps = con.prepareStatement("INSERT INTO `students`.`students_1` (`id`,`name`, `sex`, `age`,`icon`)"
                         + " VALUES (?,?,?,?,?);");  
                         ps.setInt(1, numbefore+1);  
                         ps.setString(2, "蘭陵王");
                         ps.setString(3,"男");
                         ps.setInt(4,500);  
                         fis = new FileInputStream(image);  
                         ps.setBinaryStream(5, (InputStream) fis, (int) (image.length()));  
                         //檢查是否添加成功
                         int s = ps.executeUpdate();  
                         if (s > 0) {  
                            System.out.println("Uploaded successfully !");  
                         } else {  
                            System.out.println("unsucessfull to upload image.");  
                         }  
                
                //添加一行數據
                //使用SQL語句:INSERT INTO `students`.`students_1` (`id`, `name`, `sex`, `age`) VALUES ('1','小七', '女', '10'); 添加數據
                /*String sql1 = "INSERT INTO `students`.`students_1` (`id`,`name`, `sex`, `age`) VALUES ('1','小七', '女', '10');";
                int result1 = stmt.executeUpdate(sql1);
                System.out.println("有"+result1+"行記錄被修改");*/
                
                //動態添加一行數據
                /*ps = con.prepareStatement("INSERT INTO `students`.`students_1` (`id`,`name`, `sex`, `age`) VALUES (?,'小七', '女', '10');");
                ps.setInt(1, numbefore+1);
                int result_x = ps.executeUpdate();
                System.out.println("有"+result_x+"行記錄被修改");*/
            
                //修改一個數據
                //使用SQL語句:UPDATE `students`.`students_1` SET `name` = '康納' WHERE `age` = 12 AND `sex` = '男':修改age=12和sex=男的數據的name為康納
                String sql2 = "UPDATE `students`.`students_1` SET  `name` = '康納' WHERE `id`= '4' AND `age` = '12' AND `sex` = '男'; ";
                int result2 = stmt.executeUpdate(sql2);
                System.out.println("有"+result2+"行記錄被修改");
                
                //刪除一行數據
                //使用SQL語句:DELETE FROM `students`.`students_1` WHERE `id` = '5' ; 刪除id=5的一行
                /*String sql3 = "DELETE FROM `students`.`students_1` WHERE `id` = '8' ; ";
                int result3 = stmt.executeUpdate(sql3);
                System.out.println("有"+result3+"行記錄被修改");*/
                            
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
            } catch (SQLException e) {
                e.printStackTrace();
            } catch (FileNotFoundException e) {
                // TODO 自動生成的 catch 塊
                e.printStackTrace();
            }finally {//依次關閉數據庫接口
                if(rs!=null) {
                    try {
                        rs.close();
                    } catch (SQLException e) {
                        // TODO 自動生成的 catch 塊
                        e.printStackTrace();
                    }
                }
                if(stmt!=null) {
                    try {
                        stmt.close();
                    } catch (SQLException e) {
                        // TODO 自動生成的 catch 塊
                        e.printStackTrace();
                    }
                }
                if(con!=null) {
                    try {
                        con.close();
                    } catch (SQLException e) {
                        // TODO 自動生成的 catch 塊
                        e.printStackTrace();
                    }
                }
            }
     
        }
     
    }


三、代碼說明:

1、前面定義連接接口con、發送SQL語句接口stmt以及返回結果集接口re,其中連接接口con主要是用來連接數據庫的代碼中寫了兩種方法,都可以,在數據庫連接的第一種方法代碼中:

    String url = "jdbc:mysql://127.0.0.1:3306/students";
    String username = "root";
    String password = "123";
    con = DriverManager.getConnection(url,username,password);

127.0.0.1是本地地址,3306是數據庫的端口(在配置MySQL時設置),后面students是我新建的數據庫。username是數據庫用戶名,password是用戶登錄密碼。第二中方法類似。

2、在查詢數據中有一個students_1是我在students中創建的表,如下圖所示:

 



3、現在我將代碼中對數據庫的其他操作注釋掉,只留查詢數據庫數據,和添加圖片數據的代碼以及修改數據代碼,修改數據代碼:

    String sql2 = "UPDATE `students`.`students_1` SET  `name` = '康納' WHERE `id`= '4' AND `age` = '12' AND `sex` = '男'; ";
    int result2 = stmt.executeUpdate(sql2);
    System.out.println("有"+result2+"行記錄被修改");

按照條件修改:將id= 4,age=12和sex=“男”的數據的nam改為康納。

運行后控制台輸出如下圖所示:

 


其中第一行com.mysql.jdbc.JDBC4Connection@246b179d表示連接數據庫成功。接下來是打印的是數據庫修改之前保存的數據,后面的Uploaded successfully !表示添加圖片數據成功。運行完成后數據庫如下圖所示:

 



可以看到400k的一個圖片數據已經添加進去了。點擊第五行的icon欄會顯示你添加的圖片。

原文:https://blog.csdn.net/u014453898/article/details/79017767
原文:https://blog.csdn.net/SDBX_lyp/article/details/80217109


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM