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();
        }
    }
}
}

猜你喜欢

转载自blog.csdn.net/weixin_44177494/article/details/106203017