JDBC鏈接本地MySQL數(shù)據(jù)庫(kù),創(chuàng)建表結(jié)構(gòu)并添加數(shù)據(jù)和查詢數(shù)據(jù)

首先我們要下載JDBC的jar包,本項(xiàng)目中jar放在了lib目錄中,大家可以直接使用我這個(gè)mysql-connector-java-5.1.42-bin.jar包。

然后添加一個(gè)Main,使用JDBC鏈接MySQL數(shù)據(jù)庫(kù),創(chuàng)建表結(jié)構(gòu)并添加數(shù)據(jù)和查詢數(shù)據(jù)

具體代碼:

public class Main{

    public static void main(String[] args) throws Exception {
        connectMySQLTest01();
        connectMySQLTest02();
        connectMySQLTest03();
    }

    //鏈接數(shù)據(jù)庫(kù),創(chuàng)建student表,并添加內(nèi)容
    private static void connectMySQLTest01() throws SQLException {
        Connection conn = null;
        String sql;
        // MySQL的JDBC URL編寫方式:jdbc:mysql://主機(jī)名稱:連接端口/數(shù)據(jù)庫(kù)的名稱?參數(shù)=值
        // 避免中文亂碼要指定useUnicode和characterEncoding
        // 執(zhí)行數(shù)據(jù)庫(kù)操作之前要在數(shù)據(jù)庫(kù)管理系統(tǒng)上創(chuàng)建一個(gè)數(shù)據(jù)庫(kù),名字自己定,
        // 下面語(yǔ)句之前就要先創(chuàng)建javademo數(shù)據(jù)庫(kù)
        String url = "jdbc:mysql://localhost:3306/test?"
                + "user=root&password=123456&useUnicode=true&characterEncoding=UTF8";

        try {
            // 之所以要使用下面這條語(yǔ)句,是因?yàn)橐褂肕ySQL的驅(qū)動(dòng),所以我們要把它驅(qū)動(dòng)起來(lái),
            // 可以通過(guò)Class.forName把它加載進(jìn)去,也可以通過(guò)初始化來(lái)驅(qū)動(dòng)起來(lái),下面三種形式都可以
            Class.forName("com.mysql.jdbc.Driver");// 動(dòng)態(tài)加載mysql驅(qū)動(dòng)
            // or:
            // com.mysql.jdbc.Driver driver = new com.mysql.jdbc.Driver();
            // or:
            // new com.mysql.jdbc.Driver();

            System.out.println("成功加載MySQL驅(qū)動(dòng)程序");
            // 一個(gè)Connection代表一個(gè)數(shù)據(jù)庫(kù)連接
            conn = DriverManager.getConnection(url);
            // Statement里面帶有很多方法,比如executeUpdate可以實(shí)現(xiàn)插入,更新和刪除等
            Statement stmt = conn.createStatement();
            sql = "create table student(NO char(20),name varchar(20),primary key(NO))";
            int result = stmt.executeUpdate(sql);// executeUpdate語(yǔ)句會(huì)返回一個(gè)受影響的行數(shù),如果返回-1就沒(méi)有成功
            if (result != -1) {
                System.out.println("創(chuàng)建數(shù)據(jù)表成功");
                sql = "insert into student(NO,name) values('2012001','陶偉基')";
                result = stmt.executeUpdate(sql);
                sql = "insert into student(NO,name) values('2012002','周小俊')";
                result = stmt.executeUpdate(sql);
                sql = "select * from student";
                ResultSet rs = stmt.executeQuery(sql);// executeQuery會(huì)返回結(jié)果的集合,否則返回空值
                System.out.println("學(xué)號(hào)\t姓名");
                while (rs.next()) {
                    System.out
                            .println(rs.getString(1) + "\t" + rs.getString(2));// 入如果返回的是int類型可以用getInt()
                }
            }
        } catch (SQLException e) {
            System.out.println("MySQL操作錯(cuò)誤");
            e.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            conn.close();
        }
    }

    //鏈接數(shù)據(jù)庫(kù),查詢數(shù)據(jù)庫(kù)student表結(jié)構(gòu)的內(nèi)容
    private static void connectMySQLTest02() throws SQLException {
        Connection conn = null;
        String sql;
        // MySQL的JDBC URL編寫方式:jdbc:mysql://主機(jī)名稱:連接端口/數(shù)據(jù)庫(kù)的名稱?參數(shù)=值
        // 避免中文亂碼要指定useUnicode和characterEncoding
        // 執(zhí)行數(shù)據(jù)庫(kù)操作之前要在數(shù)據(jù)庫(kù)管理系統(tǒng)上創(chuàng)建一個(gè)數(shù)據(jù)庫(kù),名字自己定,
        // 下面語(yǔ)句之前就要先創(chuàng)建javademo數(shù)據(jù)庫(kù)
        String url = "jdbc:mysql://localhost:3306/test?"
                + "user=root&password=123456&useUnicode=true&characterEncoding=UTF8";

        try {
            // 之所以要使用下面這條語(yǔ)句,是因?yàn)橐褂肕ySQL的驅(qū)動(dòng),所以我們要把它驅(qū)動(dòng)起來(lái),
            // 可以通過(guò)Class.forName把它加載進(jìn)去,也可以通過(guò)初始化來(lái)驅(qū)動(dòng)起來(lái),下面三種形式都可以
            Class.forName("com.mysql.jdbc.Driver");// 動(dòng)態(tài)加載mysql驅(qū)動(dòng)
            // or:
            // com.mysql.jdbc.Driver driver = new com.mysql.jdbc.Driver();
            // or:
            // new com.mysql.jdbc.Driver();

            System.out.println("成功加載MySQL驅(qū)動(dòng)程序");
            // 一個(gè)Connection代表一個(gè)數(shù)據(jù)庫(kù)連接
            conn = DriverManager.getConnection(url);
            // Statement里面帶有很多方法,比如executeUpdate可以實(shí)現(xiàn)插入,更新和刪除等
            Statement stmt = conn.createStatement();
            sql = "create table student(NO char(20),name varchar(20),primary key(NO))";
            //查詢數(shù)據(jù)庫(kù)student表結(jié)構(gòu)數(shù)據(jù)
            sql = "select * from student";
            ResultSet rs = stmt.executeQuery(sql);// executeQuery會(huì)返回結(jié)果的集合,否則返回空值
            System.out.println("學(xué)號(hào)\t姓名");
            while (rs.next()) {
                System.out
                        .println(rs.getString(1) + "\t" + rs.getString(2));// 入如果返回的是int類型可以用getInt()
            }
        } catch (SQLException e) {
            System.out.println("MySQL操作錯(cuò)誤");
            e.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            conn.close();
        }
    }

    //封裝一個(gè)DBHelper類來(lái)打開(kāi)和關(guān)閉數(shù)據(jù)庫(kù)
    private static void connectMySQLTest03() {

        String sql = "select * from student";//SQL語(yǔ)句
        DBHelper db1 = new DBHelper(sql);//創(chuàng)建DBHelper對(duì)象

        try {
            ResultSet ret = db1.pst.executeQuery();//執(zhí)行語(yǔ)句,得到結(jié)果集
            while (ret.next()) {
                System.out
                        .println(ret.getString(1) + "\t" + ret.getString(2));// 入如果返回的是int類型可以用getInt()
            }
            ret.close();
            db1.close();//關(guān)閉連接
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

Cmd命令行窗口中,MySQL表中數(shù)據(jù)亂碼問(wèn)題

百度了一下。。有說(shuō)將cmd字符編碼用chcp命令改為65001(utf8字符編碼),可這樣之后根本無(wú)法輸入中文,查詢出的中問(wèn)結(jié)果依舊亂碼
其實(shí),只要保證cmd客戶端和MySQL兩者編碼一致即可。
但現(xiàn)實(shí)是cmd默認(rèn)的是gbk(cmd屬性可以看到中文操作系統(tǒng)下面是gbk編碼),而mysql一般是utf8(我的也是),之前一直進(jìn)入誤區(qū),想要更改cmd的字符編碼,可是并不能行得通。網(wǎng)友中提到在mysql中關(guān)于客戶端編碼問(wèn)題,只需在cmd里告訴mysql服務(wù)器我客戶端這邊編碼和想要的結(jié)果集編碼即可。

具體步驟:
1、win+r進(jìn)入cmd,然后切到mysql安裝目錄的bin文件夾下(或者直接打開(kāi)我的電腦找到bin文件夾,在上方地址欄輸入cmd);

2、輸入 mysql -uroot -p,然后按提示輸入密碼計(jì)入數(shù)據(jù)庫(kù);

3、設(shè)置編碼;

此時(shí)輸入 set character_set_client=gbk;告訴我客戶端這邊的文字編碼
再輸入set character_set_results=gbk; 告訴mysql希望返回的結(jié)果集編碼;實(shí)驗(yàn)中發(fā)現(xiàn)只要客戶端是gbk編碼的,只要設(shè)置這個(gè)就可以解決亂碼這個(gè)問(wèn)題。

還有另外一個(gè)好用的命令可以同時(shí)達(dá)到上面兩條指令的效果:

set charset gbk;//和上面兩個(gè)效果一致。

大功告成!去插入中文字段試試吧!

項(xiàng)目地址:傳送門

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容