"Java Basic Introduction 2 Edition" - programadores de cavalos negros após as respostas das aulas e explicação detalhada Capítulo 9 JDBC

1. Preencha os espaços em branco

1、 Java Database Connectivity
2、 java.sql.*
3、 classpath
4、 registerDriver()
5、	next()

2. Verdadeiro ou falso

1、对   2、错   3、对   4、错   5、错

Três questões de múltipla escolha

1、A    2、C      3、A     4、D      5、AC

Quatro perguntas de resposta curta

1. JDBC é um conjunto de API Java para executar instruções SQL. Os aplicativos podem se conectar a bancos de dados relacionais por meio desse conjunto de APIs e usar instruções SQL para concluir operações como consultar, adicionar, atualizar e excluir dados no banco de dados.

2. (1) Carregar o driver do banco de dados
(2) Obter a conexão do banco de dados por meio do DriverManager
(3) Obter o objeto Instrução por meio do objeto Conexão
(4) Usar a instrução para executar a instrução SQL
(5) Operar conjunto de resultados ResultSet
(6) Fechar conexão e liberar recursos

3. (1) A legibilidade e manutenção do código
(2) PreparedStatement faz o seu melhor para melhorar o desempenho, porque a instrução preparada pode ser chamada repetidamente, então o código de execução da instrução após ser compilado pelo compilador DB é armazenado em cache, então Na próxima vez que for chamado, desde que seja a mesma instrução preparada, não precisa ser compilado.Contanto que o parâmetro seja passado diretamente para o código de execução da instrução compilada (equivalente a uma função), ele será executado.
(3) Melhorar significativamente a segurança da transmissão. Os parâmetros passados ​​para o objeto PreparedStatement podem ser forçados a realizar a conversão de tipo, para que os desenvolvedores possam garantir que eles correspondam ao formato do banco de dados subjacente ao inserir ou consultar dados; no ambiente do site público, evita problemas de injeção de Sq.

Cinco, questões de programação

1.public static void main(String[] args) throws Exception {
    
    
		// int i = insert();
		// int i = delete();
		// int i = update();
		select();
		// System.out.println(i);
	}

	// 获取连接对象
	private static Connection getConn() {
    
    
		String driver = "com.mysql.jdbc.Driver";
		String url = "jdbc:mysql://localhost:3306/javatest";
		String username = "root";
		String password = "1234";
		Connection conn = null;
		try {
    
    
			Class.forName(driver); // classLoader,加载对应驱动
			conn = DriverManager.getConnection(url, username, password);
} catch (ClassNotFoundException e) {
    
    
			e.printStackTrace();
		} catch (SQLException e) {
    
    
			e.printStackTrace();
		}
		return conn;
	}

	// 插入操作
	private static int insert() {
    
    
		Connection conn = getConn();
		int i = 0;
		String sql = "insert into tb_user(name,sex,email,birthday) values(?,?,?,?)";
		PreparedStatement pstmt;
		try {
    
    
			pstmt = conn.prepareStatement(sql);
			pstmt.setString(1, "itcast");
			pstmt.setString(2, "男");
			pstmt.setString(3, "[email protected]");
			pstmt.setString(4, "2000-01-01");
			i = pstmt.executeUpdate();
			pstmt.close();
			conn.close();
		} catch (SQLException e) {
    
    
			e.printStackTrace();
		}
		return i;
	}

	// 删除操作
	private static int delete() {
    
    
		Connection conn = getConn();
		int i = 0;
		String sql = "delete from tb_user where name=?";
		PreparedStatement pstmt;
		try {
    
    
			pstmt = conn.prepareStatement(sql);
			pstmt.setString(1, "itcast");
			i = pstmt.executeUpdate();
		} catch (Exception e) {
    
    
			e.printStackTrace();
		}
		return i;
	}
// 更新操作
	private static int update() {
    
    
		Connection conn = getConn();
		int i = 0;
		String sql = "update tb_user set name=? where name =?";
		PreparedStatement pstmt;
		try {
    
    
			pstmt = conn.prepareStatement(sql);
			pstmt.setString(1, "itcast");
			pstmt.setString(2, "abc");
			i = pstmt.executeUpdate();
			System.out.println("resutl: " + i);
			pstmt.close();
			conn.close();
		} catch (SQLException e) {
    
    
			e.printStackTrace();
		}
		return i;
	}

	// 查询操作
	private static void select() {
    
    
		Connection conn = getConn();
		String sql = "select * from tb_user";
		PreparedStatement pstmt;
		try {
    
    
			pstmt = conn.prepareStatement(sql);
			ResultSet rs = pstmt.executeQuery();
			while (rs.next()) {
    
    
				int id = rs.getInt("id"); // 通过列名获取指定字段的值
				String name = rs.getString("name");
				String sex = rs.getString("sex");
				String email = rs.getString("email");
				Date birthday = rs.getDate("birthday");
				System.out.println(id + "	|	" + name + "	|	" + sex + "	|	" + email + "	|	" + birthday);
			}
			pstmt.close();
			conn.close();
		} catch (Exception e) {
    
    
			e.printStackTrace();
		}
	}
2.import java.sql.*;
public class Test {
    
    
	public static void main(String[] args) throws Exception {
    
    
		transferAccounts(2, 1, 100);
	}
	public static void transferAccounts(int fromid,int toid,int transferMoney) throws Exception{
    
    
		Class.forName("com.mysql.jdbc.Driver");
		String url = "jdbc:mysql://localhost:3306/jdbc";
		Connection con = DriverManager.getConnection(url,"root", "root");
		int fromMoney = getMoney(fromid);
		// 转出账户
		String sql = "update tb_count set money=? where id =?";
		PreparedStatement ps = con.prepareStatement(sql);
		ps.setInt(1, fromMoney-transferMoney);
		ps.setInt(2, fromid);
		// 转入账户
		int toMoney = getMoney(toid);
		String sql2 = "update tb_count set money=? where id =?";
		PreparedStatement ps2 = con.prepareStatement(sql2);
		ps2.setInt(1, toMoney+transferMoney);
		ps2.setInt(2, toid);
		ps.executeUpdate();
		ps2.executeUpdate();
		ps.close();
		ps2.close();
		con.close();
	}
	// 获取当前账户id的账户余额
	public static int getMoney(int id) throws Exception{
    
    
		Class.forName("com.mysql.jdbc.Driver");
		String url = "jdbc:mysql://localhost:3306/jdbc";
		Connection con = DriverManager.getConnection(url,"root", "root");
		String sql = "select money from tb_count where id =?";
		PreparedStatement ps = con.prepareStatement(sql);
		ps.setInt(1, id);
		ResultSet resultSet = ps.executeQuery();
		int money = 0;
		while(resultSet.next()){
    
    
			money = resultSet.getInt(1);
		}
		ps.close();
		con.close();
	return money;
	}
}

Seis, a pergunta original e sua análise

Nada.

Acho que você gosta

Origin blog.csdn.net/hypertext123/article/details/109315098
Recomendado
Clasificación