Bootstrap

【Java】IDEA连接数据库

一、第一个JDBC程序

1、创建数据库并导入测试数据
2、创建一个IDEA项目
3、导入数据库驱动

1)在项目下新建一个目录,命名为lib在这里插入图片描述2)Ctrl+C Ctrl+V把jar包粘到lib目录下。
3)右键lib→Add as Library(添加到库)→确定
在这里插入图片描述
4、编写代码

import java.sql.*;

public class Jdbc {
        public static void main(String[] args) throws ClassNotFoundException, SQLException {
            //1、加载驱动
            Class.forName("com.mysql.jdbc.Driver");
            //2、设置用户连接信息
            String url = "jdbc:mysql://localhost:3306/jdbcstudy?useUnicode=true&characterEncoding=utf8&useSSL=true";
            String username = "root";
            String password = "123456";
            //3、连接
            Connection connection = DriverManager.getConnection(url, username, password);
            //4、执行SQL对象
            Statement statement = connection.createStatement();
            String sql = "SELECT * FROM users";
            ResultSet resultSet = statement.executeQuery(sql);
            //5、执行SQL的对象,去执行SQL语句
            while(resultSet.next()){
                System.out.println("id="+resultSet.getObject("id"));
                System.out.println("username="+resultSet.getObject("name"));
                System.out.println("password="+resultSet.getObject("password"));
            }
            //6、释放连接
            resultSet.close();
            statement.close();
            connection.close();
        }
}

5、步骤总结
1)加载驱动
2)连接数据库 DriverManager
3)获取执行的sql对象 Statement
4)获得返回的结果集
5)释放资源

二、JDBC中对象解释

1、DriverManager
1)加载驱动
A. DriverManager.registerDriver(new com.mysql.jdbc.Driver()); (不推荐)
B、Class.forName("com.mysql.jdbc.Driver");(推荐写法)
2)获取数据库驱动的对象
Connection connection = DriverManager.getConnection(url, username, password);
connection代表数据库的对象,主要方法如下:
①数据库设置自动提交connection.setAutoCommit();
②事务提交connection.commit();
③事务回滚connection.rollback();
2、URL
String url = "jdbc:mysql://localhost:3306/jdbcstudy?useUnicode=true&characterEncoding=utf8&useSSL=true";
①固定格式
协议//主机地址:端口号/数据库名?参数1&参数2&参数3
【补充】mysql默认端口号3306,Oracle 默认端口号1521
URL书写格式为//jdbc:oracle:thin@localhost:1521:sid
参数1:useUnicode使用中文编码
参数2:characterEncoding字符集编码
参数3:useSSL设置安全连接
3、Statement
执行SQL的对象,部分方法说明如下:
其中删除和插入均为更新
statement.executeQuery();
statement.execute();
statement.executeUpdate();
4、ResultSet
查询的结果集,封装了所有的查询结果
1)获得指定的数据类型
resultSet.getObject(); 在不知道列类型的情况下使用,如果知道就用指定类型
resultSet.getString();
resultSet.getInt();
resultSet.getFloat();
resultSet.getDate();
2)遍历
resultSet.beforeFirst(); //移动到最前面
resultSet.afterLast(); //移动到最后面
resultSet.next(); //移动到下一个数据
resultSet.previous(); //移动到前一行
resultSet.absolute(row); //移动到指定行
5、释放连接
倒着释放,先创建的后释放
resultSet.close();
statement.close();
connection.close();

三、Statement对象详解

1、用于向数据库发送SQL语句,想完成对数据库的增删改查,只需要通过这个对象向数据库发送增删改查语句即可。
executeQuery() 向数据库发送查询语句(查)
executeUpdate() 返回代表查询结果的ResultSet对象(增删改)

四、SQL注入

Sql存在漏洞,会被攻击导致数据泄露

五、PreparedStatement对象

PreparedStatement可以防止SQL注入,效率更高!

六、参考链接

https://www.bilibili.com/video/BV1NJ411J79W/?spm_id_from=333.1007.top_right_bar_window_custom_collection.content.click&vd_source=9140dcc493e34a9f4e95ca2f8f71bbd3

;