首頁 > 軟體

Java存取資料庫範例詳解

2022-03-01 13:04:07

JAVA程式想要存取資料庫,需要進行如下準備:

1.安裝一個資料庫(這裡使用mysql免安裝版)
2.下載該資料庫的驅動包(這裡使用mysql官方提供的mysql-connector-java-5.1.39-bin)

PS:我的這個免安裝的MySQL不知道為什麼儲存的中文都是亂碼,參考了別人的解決方案修改了my-default.ini檔案也不行,如果各位看到這篇文章的大佬有解決辦法,還請不吝賜教,感謝!

一、啟動資料庫

將mysql免安裝壓縮包解壓到某目錄下
雙擊 mysql-5.6.24-win32 => bin => mysqld.exe 啟動資料庫
正常情況下會閃過一個黑框
開啟DOS視窗,進入mysql資料夾所在盤(我的是D槽)
依次輸入如下命令:
cd mysql* => cd bin =>mysql -uroot
(出現如下圖提示說明已經進入資料庫,可以開始使用資料庫了)

二、建立資料庫

你可以直接在DOS視窗輸入sql語句建立資料庫;
也可以將你的所有操作儲存到一個sql檔案,再在DOS視窗匯入這個檔案。(由於建立資料庫的命令較多,這裡採用第二種方法)
建立db.sql檔案(我儲存到了D槽)

create database if not exists stu;
use stu;
drop table if exists classes;
create table classes(
id int(10) primary key auto_increment,
num varchar(12) not null ,
name varchar(45) not null,
teacher varchar(15) not null,
unique(name),
unique(num)
);
insert into classes(num,name,teacher ) values('20170101','Mike','Tom');
insert into classes(num,name,teacher ) values('20170102','Nancy','Tom');
insert into classes(num,name,teacher ) values('20170103','Frank','Tom');

然後在DOS視窗輸入:source d:/db.sql;
(出現如下圖提示說明匯入成功)

檢視資料庫裡的資料

三、JAVA程式匯入jar包

eclipse裡建立專案jdbc
將下載好的jar包複製到該專案下

右擊jar包 => Build Path => Add To Build Path

四、連線資料庫

建立DBCon檔案,獲取資料庫連線物件

package db;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class DBCon {
    public Connection con=null;    //建立資料庫連線物件
    String url="jdbc:mysql://localhost:3306/stu";   //指定所要連線的資料庫的URL
                                                    //3306表示要連線的是本地資料庫;stu為要連線的具體資料庫名稱
    String user="root";       //使用者名稱
    String password="";       //密碼
    public Connection getConnection() {
        try {
            Class.forName("com.mysql.jdbc.Driver");    //載入資料庫驅動器
            
        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        try {
            con=(Connection)DriverManager.getConnection(url, user, password);
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return con;
    }
}

五、測試

建立Classes類檔案,儲存和存取學生資料

public class Classes {
    private String num;
    private String name;
    private String teacher;
    public Classes() {
        super();
        // TODO Auto-generated constructor stub
    }
    public Classes(String num, String name, String teacher) {
        super();
        this.num = num;
        this.name = name;
        this.teacher = teacher;
    }
    public String getNum() {
        return num;
    }
    public void setNum(String num) {
        this.num = num;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getTeacher() {
        return teacher;
    }
    public void setTeacher(String teacher) {
        this.teacher = teacher;
    }
    

}

建立測試類Test

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import db.DBCon;

public class Test {
    
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Connection cn;
        PreparedStatement psm=null;    //PrepareStatement介面用來執行動態的sql語句
        ResultSet rs;    //ResultSet介面用來暫存資料庫查詢出的結果集
        DBCon dbcon=new DBCon();
        cn=dbcon.getConnection();    //獲取資料庫物件
        Classes classes=new Classes();
        String sql="select * from classes";
        try {
            psm=cn.prepareStatement(sql);    //範例執行sql語句
            rs=psm.executeQuery();    //將結果賦給rs指標
            if(rs.next()) {            //判斷是否查詢到結果
                rs.absolute(0);        //將rs指標置於結果集最上方
                while(rs.next()) {
                    String classNum=rs.getString(2);
                    String className=rs.getString(3);
                    String classTeacher=rs.getString(4);
                    classes.setNum(classNum);
                    classes.setName(className);
                    classes.setTeacher(classTeacher);
                    System.out.println(classes.getNum()+","+classes.getName()+","+classes.getTeacher());
                }
                
            }
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        
    }

}

執行Test檔案,出現所查詢內容

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援it145.com。


IT145.com E-mail:sddin#qq.com