JDBC-DAY01——数据库的连接,查询,日期插入,预编译,模拟登陆注册

目录

  • Connection - 数据库的连接
  • Statement 中执行sql语句的方法有三个(execute)
  • DQL的查询
  • **登录不安全的语法案例:**
  • 数据库中的日期插入
  • 预编译:PreparedStatement extends Statement
  • 批量执行sqlyuju,以及增加事务回滚操作。
  • 模拟登陆,注册

JDBC: Java DataBase Connective
Java连接数据库的规范 - 接口
java.sql -> JDBC 规范相关的接口,类
实现类: 各个数据库厂商来提供

Connection - 数据库的连接

1.Connection - 连接
a.引入jar包
mysql-connector-java-5.1.8-bin.jar(推荐数据库版本: 5.5 5.7 5.x )
mysql-connector-java-8.0.16.jar(推荐数据库版本: 8.x)
b.加载驱动 - 类
Class.forName(“驱动类名”);
连接mysql与oracle sql的驱动类名不同:
1.oracle: oracle.jdbc.driver.OracleDriver
2.mysql: com.mysql.jdbc.Driver
c.获得连接
DriverManager.getConnection(url, username, password);
url: jdbc:mysql://ip:port/database ?serverTimezone=GMT
注: jdbc连接的url中配置的时区有问题可将?serverTimezone=GMT加到上述位置
username: 数据库账号
password: 数据库密码


Connection conn = DriverManager.getConnection
("jdbc:mysql://localhost:3306/db_day01",
 "root", "123456");

d.获得执行SQL语句的Statement对象
e.执行SQL, 获得结果 boolean int ResultSet
f.释放资源
连接案例:

package com.zzxx.jdbc;

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

public class JDBCDemo01 {
   
    public static void main(String[] args) {
   
        // 1.导入jar包
        /* 2.加载驱动
            可能产生异常: ClassNotFoundException
            原因: 1.没有导入jar包
                 2.类名写错
         */
        try {
   
            Class.forName("com.mysql.cj.jdbc.Driver");
            // 3.获得连接对象 DriverManager
            /* DriverManager 提供了一个静态方法 getConnection
               参数1: 连接数据库的url地址
                     jdbc:mysql://ip:port/dataBase
               参数2: 连接数据库的账号
               参数3: 连接数据库的密码

               可能产生异常: SQLException
                 1.dataBase 指定错误
                 2.账号/密码错误
                 3.端口错误 -> Connection refused
                 4.ip错误 -> Network is unreachable
                 5.jdbc:mysql 错误 -> No suitable driver
                   结论: 连接数据库url需要匹配合适的驱动类
             */
            Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/db_day01", "root", "root");
            // 4.获得操作数据库的Statement对象 - 执行sql语句
            Statement stmt = conn.createStatement();
            // 5.执行sql语句  DDL DML DQL
            String sql = "create table u (id int primary key, name varchar(20))";
            stmt.execute(sql);
        } catch (ClassNotFoundException e) {
   
            e.printStackTrace();
        } catch (SQLException throwables) {
   
            throwables.printStackTrace();
        }
    }
}

Statement 中执行sql语句的方法有三个(execute)

boolean execute(String sql)
DDL DML: 返回false DQL: 返回true
因为DML 和 DQL有专门的执行方法, 所以该方法通常用来执行DDL
返回值: 有没有结果
int executeUpdate(String sql)
只能执行 DML
返回值: 影响了几行
ResultSet executeQuery(String sql)
只能执行 DQL
返回值: 查询出来的结果集

package com.zzxx.jdbc;

import org.junit.Test;

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

public class JDBCDemo02 {
   
    @Test
    public void testDDL() {
   
        try {
   
            Class.forName("com.mysql.cj.jdbc.Driver");
            Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/db_day01", "root", "root");
            Statement stmt = conn.createStatement();
            // 5.执行sql语句  DDL DML DQL
            /* Statement 中执行sql语句的方法有三个
                boolean execute(String sql)
                    DDL DML: 返回false    DQL: 返回true
                    因为DML 和 DQL有专门的执行方法, 所以该方法通常用来执行DDL
                    返回值: 有没有结果
                int executeUpdate(String sql)
                    只能执行 DML
                    返回值: 影响了几行
                ResultSet executeQuery(String sql)
                    只能执行 DQL
                    返回值: 查询出来的结果集
             */
            // 执行DDL
            String sql = "create table u1 (id int primary key, name varchar(20))";
            boolean b = stmt.execute(sql); // false
            System.out.println(b);
        } catch (ClassNotFoundException e) {
   
            e.printStackTrace();
        } catch (SQLException throwables) {
   
            throwables.printStackTrace();
        }
    }
    @Test
    public void testDML() {
   
        try {
   
            Class.forName("com.mysql.cj.jdbc.Driver");
            Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/db_day01", "root", "root");
            Statement stmt = conn.createStatement();
            // 5.执行sql语句  DDL DML DQL
            // 执行DML
            String sql = "insert into u values(1, 'lucy')";
            boolean b = stmt.execute(sql); // false
            System.out.println(

你可能感兴趣的:(java)