JDBC链接MySQL day18

package com.shujia.day18.ketang;


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

/*
    我们要想操作mysql数据库,jdk本身是无法操作的,因为java并不知道将来开发者需要使用java连接什么样的数据库,所以jdk本身只提供一系列接口
    要想使用java链接并操作mysql的话,需要找到mysql团队开发好的驱动包,包中具有实现了jdk接口的类的class文件
    需要找到这样一份驱动包,放在我们的项目中,这样我们就可以使用java语言操作mysql了。

JDBC编程6步:
    1.注册驱动(告诉Java程序,即将连接的是哪个品牌的数据库)
    2.获取连接(表示JVM的进程和数据库进程之间的通道打开了,这属于进程之间的通信,使用完后记得关闭通道)。
    3.获取数据库操作对象(专门执行sql语句的对象)
    4.执行SQL语句(DQL,DML…)
    5.处理查询结果集 (只有当第四步执行的是select语句的时候,才有本步)
    6.释放资源(使用完资源后一定要关闭资源,Java和数据库之间属于进程间的通信,开启之后一定要记得关闭)


 */
public class JDBCDemo1 {
    public static void main(String[] args) throws Exception {
        //1.注册驱动(告诉Java程序,即将连接的是哪个品牌的数据库)
        Class.forName("com.mysql.jdbc.Driver");

        //2.获取连接(表示JVM的进程和数据库进程之间的通道打开了,这属于进程之间的通信,使用完后记得关闭通道)。
        /**
         *  url: 超链接,指定mysql服务器的地址
         *      jdbc:mysql://192.168.136.100:3306/car_db
         *  user: root
         *  password: 123456
         *
         */
        Connection conn = DriverManager.getConnection("jdbc:mysql://192.168.136.100:3306/bigdata31?useUnicode=true&characterEncoding=utf-8&useSSL=false", "root", "123456");

        //3.获取数据库操作对象(专门执行sql语句的对象)
        Statement state = conn.createStatement();
/*
 PreparedStatement preparedStatement = conn.prepareStatement("SELECT user from ?");//获得预编译数据库操作对象
 preparedStatement.setString(1,newPassword);//表示第一个?传入newPassword值
 ResultSet resultSet = preparedStatement1.executeQuery();//启动预编译查询语句
*/

        //4.执行SQL语句(DQL,DML…)
        //executeQuery: 查询语句
        //executeUpdate: 增删改语句
//        int i = state.executeUpdate("insert into author values(1003,'陈真','中国')"); //返回的是受影响的行数
//        if(i==1){
//            System.out.println("数据添加成功!");
//        }else {
//            System.out.println("数据添加失败!");
//        }


        /*
            删除操作
         */
//        int i = state.executeUpdate("delete from author where id=1003");
//        if (i == 1) {
//            System.out.println("数据删除成功!");
//        } else {
//            System.out.println("数据删除失败!");
//        }

        /*
            修改操作
         */
//        int i = state.executeUpdate("update author set nation='俄罗斯' where id=1002");
//        if (i == 1) {
//            System.out.println("数据更新成功!");
//        } else {
//            System.out.println("数据更新失败!");
//        }

        /*
            查询操作
         */
        String sql = "SELECT\n" +
                "\tt1.empno AS eno,\n" +
                "\tt1.ename AS ename,\n" +
                "\tt1.hiredate AS edate,\n" +
                "\tt2.empno AS lno,\n" +
                "\tt2.ename AS lname,\n" +
                "\tt2.hiredate AS ldate \n" +
                "FROM\n" +
                "\temp t1\n" +
                "\tJOIN emp t2 ON ( t1.mgr = t2.empno ) \n" +
                "WHERE\n" +
                "\tt1.hiredate < t2.hiredate;\n";


        //返回的是一个结果集
        ResultSet resultSet = state.executeQuery(sql);
        //next()判断表中是否有多余的条数数据
        while (resultSet.next()){    //判断下一行是否有数据
            //取出每一条数据中的每一列,去除每一行数据的每一列
            //根据列名获取每一列的值
//            int eno = resultSet.getInt("eno");
//            String ename = resultSet.getString("ename");
//            String edate = resultSet.getString("edate");
//            int lno = resultSet.getInt("lno");
//            String lname = resultSet.getString("lname");
//            String ldate = resultSet.getString("ldate");
//            System.out.println(eno+","+ename+","+edate+","+lno+","+lname+","+ldate);


            //若不知道列名呢
            int eno = resultSet.getInt(1);
            String ename = resultSet.getString(2);
            String edate = resultSet.getString(3);
            int lno = resultSet.getInt(4);
            String lname = resultSet.getString(5);
            String ldate = resultSet.getString(6);
            System.out.println(eno+","+ename+","+edate+","+lno+","+lname+","+ldate);
        }


        //6.释放资源(使用完资源后一定要关闭资源,Java和数据库之间属于进程间的通信,开启之后一定要记得关闭)
        state.close();
        conn.close();

    }
}
posted @ 2024-08-18 16:41  ていせい  阅读(5)  评论(0编辑  收藏  举报