10月8日 Jdbc(1)

jdbc

接口是一个类的父类

10月8日 Jdbc(1)_第1张图片

 java连接数据库, java操作数据库,  把java作为数据库的一个客户端

10月8日 Jdbc(1)_第2张图片

JDBC是接口,而JDBC驱动才是接口的实现,没有驱动无法完成数据库连接!每个数据库厂商都有自己的驱动,用来连接自己公司的数据库。

​        当然还有第三方公司专门为某一数据库提供驱动,这样的驱动往往不是开源免费的!

jdbc开发步骤:

  1. 编码, 使用jdk提供的jdbc接口(位于java.sql包),

核心接口: java.sql.Connection(连接)

​ java.sql.Statement(发送sql,通知数据库执行)

​ java.sql.ResultSet(获取查询sql的结果集)

一个核心类: java.sql.DriverManager(数据库驱动管理器), 得到数据库的连接对象

jdbc开发步骤:

  1. 添加第三方数据库驱动ja

  2. 10月8日 Jdbc(1)_第3张图片

  1. 编码, 使用jdk提供的jdbc接口(位于java.sql包),

        核心接口: java.sql.Connection(连接)

​         java.sql.Statement(发送sql,通知数据库执行)

​         java.sql.ResultSet(获取查询sql的结果集)

        一个核心类: java.sql.DriverManager(数据库驱动管理器), 得到数据库的连接对象

10月8日 Jdbc(1)_第4张图片

 jdbc的编码

//写程序:记住思路和套路  多谢有时候没有太大作用

>1. 项目中导入数据库驱动jar
>2. 加载启动类
>3. 得到连接对象Connection
>4. 创建Statement对象
>5. 编写sql语句(java普通字符串)
>6. 执行之
>7. 如果增删改, 得到结果: 受影响行数, 如果查询,得到结果集(ResultSet), 解析ResultSet得到数据
>8. 关闭资源

10月8日 Jdbc(1)_第5张图片

10月8日 Jdbc(1)_第6张图片

10月8日 Jdbc(1)_第7张图片

实现查询 

import java.sql.*;
import java.util.Date;
import java.util.Scanner;

/**
 * 查询
 */
public class Demo2 {
    public static void main(String[] args) {
         /*
        1. 加载启动类
        2. 得到连接对象Connection
        3. 创建Statement对象
        4. 编写sql语句(java普通字符串)
        5. 执行之
        6. 如果增删改, 得到结果: 受影响行数, 如果查询,得到结果集(ResultSet), 解析ResultSet得到数据
        7. 关闭资源
         */
        Connection conn = null;
        Statement statement = null;
        ResultSet resultSet = null;
        try {
            Class.forName("com.mysql.jdbc.Driver");
            String url = "jdbc:mysql://localhost:3306/test2?useUnicode=true&characterEncoding=utf8&useSSL=false";
            conn = DriverManager.getConnection(url, "root", "123");
            statement = conn.createStatement();
            System.out.print("请输入要查询员工姓名:");
            Scanner input = new Scanner(System.in);
            String name = input.next();
            String sql = "select * from emp where ename = '"+name+"'";
            System.out.println(sql);
            resultSet = statement.executeQuery(sql);

            //循环获取数据, 一行一行的获取
            //一定要先调用next()
            while(resultSet.next()){
                //获取这一行的单元格中数据
                // getXxx(int 列序号): 从1开始   Xxx: 数据类型
                int empNo = resultSet.getInt(1);
                String ename = resultSet.getString(2);
                String job = resultSet.getString(3);
                int mgr = resultSet.getInt(4);
                Date hiredate = resultSet.getDate(5);
                double sal = resultSet.getDouble(6);
                double comm = resultSet.getDouble(7);
                int deptNo = resultSet.getInt(8);

                System.out.println(empNo+","+ename+","+job+","+mgr+","+hiredate+","+sal+","+comm+","+deptNo);
            }

        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }finally{
            //倒序关
            try {
                if(resultSet != null) {
                    resultSet.close();
                }
                if(statement != null) {
                    statement.close();
                }
                if(conn != null) {
                    conn.close();
                }
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }
        }
    }
}

使用jdbc操纵数据库

import javax.xml.bind.SchemaOutputResolver;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Scanner;

/**
 * 使用jdbc操作数据
 */
public class Demo1 {
    public static void main(String[] args) {
        /*
        1. 加载启动类
        2. 得到连接对象Connection
        3. 创建Statement对象
        4. 编写sql语句(java普通字符串)
        5. 执行之
        6. 如果增删改, 得到结果: 受影响行数, 如果查询,得到结果集(ResultSet), 解析ResultSet得到数据
        7. 关闭资源
         */
        Connection conn = null;
        Statement statement = null;

        try {
            //1. 加载启动类  反射  核心: Class
            Class.forName("com.mysql.jdbc.Driver");

            //2.得到连接对象Connection  通过DriverManager的静态方法getConnection()
            String url = "jdbc:mysql://localhost:3306/test2?useUnicode=true&characterEncoding=utf8&useSSL=false";
            conn = DriverManager.getConnection(url, "root", "123");
            //System.out.println(conn);
            System.out.println("与数据库服务器连接上了...");

            //3.创建Statement对象
            statement = conn.createStatement();

            //4.编写sql语句
            //System.out.print("请输入要删除的员工编号:");
            System.out.print("请输入要加薪的员工编号:");
            Scanner input = new Scanner(System.in);
            int empno = input.nextInt();

            //删除

            //String sql ="delete  from  emp where empno = "+empno;

            String sql ="update emp set sal = sal + 500 where empno = "+empno;

            //5.执行之  执行增删改sql:  Statement的 int executeUpdate(sql)
            //     执行查询sql: Statement的 ResultSet executeQuery(sql)
            int rs = statement.executeUpdate(sql);
            if(rs > 0){
                //System.out.println("删除成功");
                System.out.println("加薪成功");
            }


        } catch (ClassNotFoundException e) {//Driver类找不到
            //出现原因: 1. 驱动jar没到导入  2. 驱动类包.类名字符串写错
            e.printStackTrace();
        } catch (SQLException throwables) {
            //出现原因: 1. 数据库服务没有开启  2. url写错  3. 用户名错误  4.密码错误
            throwables.printStackTrace();
        }finally{
            //倒序关
            try {
                if(statement != null) {
                    statement.close();
                }
                if(conn != null) {
                    conn.close();
                }
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }
        }

    }

}
important!!! 

你可能感兴趣的:(java,数据库,intellij-idea,java-ee,java)