Educoder–Java高級特性(第九章)- JDBC(上)【筆記+參考代碼】

Educoder–Java高級特性(第九章)- JDBC(上)【筆記+參考代碼】


第一關


編程要求
在右側編輯器補充代碼,完成下列相應任務:

加載數據庫驅動;【平臺數據庫連接的用戶(user)爲root,密碼(password)爲123123】

創建數據庫mysql_db;

創建表student。

student表結構爲:

| 字段名 | 類型 | 備註 | 約束 | | :————: | :————: | :————: | | id | int |
學生id | 非空 | | name | varchar(20) | 學生姓名 | 無 | | sex |
varchar(4) | 學生性別 | 無 | | age | int | 學生年齡 | 無 |

測試說明
平臺會對你編寫的代碼進行測試:

測試輸入:無 預期輸出: id INT(11) name VARCHAR(20) sex VARCHAR(4) age INT(11)



參考代碼

package jdbc;

import java.sql.*;

public class jdbcConn {
    public static void getConn() {
        /**********    Begin   **********/
        try {
			//1.註冊驅動
			Class.forName("com.mysql.jdbc.Driver");

        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
        /**********    End   **********/
        /**********    Begin   **********/
        Connection conn = null;
        Statement statement = null;
        //2.建立連接並創建數據庫和表
		String url = "jdbc:mysql://127.0.0.1:3306/";
		String user = "root";
		String password = "123123";
		try{
			conn = DriverManager.getConnection(url,user,password);
			statement = conn.createStatement();
  			statement.executeUpdate("drop database if exists test");//執行sql語句
  			statement.executeUpdate("create database mysql_db");
			statement.executeUpdate("use mysql_db");
			String sql = "create table student("+
						 "id int not null,"+
						 "name varchar(20),"+
						 "sex varchar(4),"+
						 "age int)";
			statement.executeUpdate(sql);
		}catch (SQLException e){
			e.printStackTrace();
		}
        /**********    End   **********/
        finally {
            try {
                if(statement!=null)
                    statement.close();
                if(conn!=null)
                    conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}



第二關


編程要求
在右側編輯器補充代碼,向上一章節中已創建好的數據庫mysql_db中的表student中插入數據,並將插入的數據進行輸出:

| id | name | sex | age |
| :————: | :————: | :————: |
| 1 | 張三 | 男 | 19 |
| 2 | 李四 | 女 | 18 |
| 3 | 王五 | 男 | 20 |

提示:已爲你封裝好student類,可在右側文件夾中查看,此類可直接使用。

測試說明
平臺會對你編寫的代碼進行測試:

測試輸入:無
預期輸出:
1 張三 男 19
2 李四 女 18
3 王五 男 20



參考代碼

package jdbc;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;
public class jdbcInsert {
   public static void insert(){
    /**********   Begin   **********/
    try {
        //加載驅動
        Class.forName("com.mysql.jdbc.Driver" );
    } catch (ClassNotFoundException e) {
        e.printStackTrace();
    }
    /**********   End   **********/
    Connection conn = null;
    PreparedStatement statement = null;
    /**********   Begin   **********/
    //連接並插入數據
    try{
        conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/mysql_db","root","123123");
        PreparedStatement s = conn.prepareStatement("insert into student values(?,?,?,?)");
        s.setInt(1,1);s.setString(2,"張三");s.setString(3,"男");s.setInt(4,19);
        s.executeUpdate();
        s.setInt(1,2);s.setString(2,"李四");s.setString(3,"女");s.setInt(4,18);
        s.executeUpdate();
        s.setInt(1,3);s.setString(2,"王五");s.setString(3,"男");s.setInt(4,20);
        s.executeUpdate();
        s=conn.prepareStatement("select * from student");
        ResultSet r = s.executeQuery();
        while(r.next()){
            System.out.println(r.getString(1)+" "+r.getString(2)+" "+r.getString(3)+" "+r.getString(4));
        }
    } catch (SQLException e) {
        e.printStackTrace();
    }
    /**********   End   **********/
    finally {
      try {
            if (statement != null)
                statement.close();
            if (conn != null)
                conn.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}
}



第三關


編程要求
根據提示,在右側編輯器補充代碼,編寫一條新增SQL語句和任意一條錯誤的SQL語句,提交事務;要求第一條新增語句在數據庫中被修改,其後錯誤SQL語句不執行。

新增插入語句具體要求如下: 在mysql_db數據庫student表中新增一條id爲4,name爲趙六,sex爲女,age爲21的數據。

提示:每一條SQL語句之後都可提交事務。

測試說明
平臺會對你編寫的代碼進行測試:

測試輸入:無 預期輸出:
1 張三 男 19
2 李四 女 18
3 王五 男 20
4 趙六 女 21



參考代碼

package jdbc;
import java.sql.*;
public class jdbcTransaction {
    public static void transaction(){
    try {
        Class.forName("com.mysql.jdbc.Driver" );
    } catch (ClassNotFoundException e) {
        e.printStackTrace();
    }
    Connection conn = null;
    PreparedStatement ps = null;
    /**********  Begin   **********/
    //連接數據庫並開啓事務
    String url = "jdbc:mysql://localhost:3306/mysql_db";
    try {
        conn = DriverManager.getConnection (url,"root","123123" );
        conn.setAutoCommit(false);//關閉自動提交開啓事務
        ps = conn.prepareStatement("insert into student(id,name,sex,age) values(4,'趙六','女',21)");
        ps.executeUpdate();
        conn.commit();//提交事務
        ps = conn.prepareStatement("insert in student(id,name,sex,age) values(5,'錢七','男',18)");
        ps.executeUpdate();
        conn.commit();//提交事務
    } catch (SQLException e) {
        try {
            //事務回滾
            conn.rollback();
        } catch (SQLException e1) {
            e1.printStackTrace();
        }
    }
    /**********  End   **********/
    finally {
        try {
            if(ps!=null)
                ps.close();
            if (conn != null)
                conn.close();
        } catch (SQLException e1) {
            e1.printStackTrace();
        }
    }
}
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章