JDBC的简单使用+SQL预编译使用+数据库连接池(阿里巴巴的)的使用

目录

入门级

预编译方式

思路

mysql中

JDBC中

数据库连接池的使用

1 下载jar包

2 导入jar包

​ 3 新建配置文件

4 配置配置文件

5 开始使用

Java代码

思路


入门级

思路

总结一下就这几步

1 加载mysql驱动

2 获取数据库连接对象

3 初始化SQL执行对象(具体值指Statement)

4 定义SQL语句

5 将SQL语句绑定给SQL执行对象并执行获取返回结果(具体返回的是指ResultSet对象)

6 解析返回结果

7 关闭连接

//主方法调用即可
public static Connection getconn () throws SQLException
{
    //1 加载驱动
    try {
        Class.forName("com.mysql.jdbc.Driver");
    } catch (ClassNotFoundException e) {
        throw new RuntimeException(e);
    }
    //2 获取数据库连接
    String connstr="jdbc:mysql://127.0.0.1:3306";
    String username = "root";
    String password = "xx";
    Connection conn=DriverManager.getConnection(connstr,username,password);

    return conn;
}
public static void selectDbAPI() throws SQLException {
    //获取conn
    Connection conn = getconn();
    //初始化SQL执行对象
    Statement sta1 = conn.createStatement();
    //定义SQL
    String sqlString1 = "select * from pythondb.api_py";
    //执行SQL
    ResultSet resultSet = sta1.executeQuery(sqlString1);
    //解析返回结果
    ArrayList<APIinstanceClass> arrs = new ArrayList<>();
    while (resultSet.next())
    {
        int id=resultSet.getInt("id");
        String title= resultSet.getString("title");
        String content=resultSet.getString("content");
        String href = resultSet.getString("href");
       arrs.add(new APIinstanceClass(id,title,href,content));
    }
    for (APIinstanceClass api1:arrs) {
        System.out.println(api1.id+"\n"+api1.title+"\n"+api1.href + "\n"+api1.content);
    }

    conn.close();
}
//实体类,新建
public class APIinstanceClass {
    public int id;
    public String title;
    public String href;
    public String content;
    public APIinstanceClass(int id,String title,String href,String content)
    {
        this.id = id;
        this.title = title;
        this.href = href;
        this.content = content;
    }

    @Override
    public String toString() {
        System.out.println("ID "+id + " title "+title + " href "+href + " content "+content);
        return "";
    }
}

预编译方式

思路

前面的思路和入门级一样只不过这边初始化的对象不是Statement了,而是预编译对象Preparement

具体如下

1 加载mysql驱动

2 获取数据库连接对象

3 定义带占位符(?)的SQL语句

4 初始化预编译SQL对象(具体值指Preparement)并绑定SQL语句(带占位符的)

5 填充使用Preparement对象填充SQL中的占位符

5 执行Preparement对象并执行获取返回结果(具体返回的是指ResultSet对象)

6 解析返回结果

7 关闭连接

mysql中

预编译方式进行操作
优点
多次执行相同类型的sql时更快,还能有效防止SQL注入

预编译定义 
prepare statement_1 from "select * from api_py where id=?"

设置参数并填入相应参数(@加一些字符串形成一个变量)
set@ID1=2
execute statement_1 using @ID1 

删除预编译
deallocate prepare statement_1

JDBC中

public static void Setprapare() throws SQLException
    {
        //建立连接
        Connection conn = getconn();
        //定义sql
        String sql1="select * from pythondb.api_py where id=? or title=?";
        //初始化预编译对象
        PreparedStatement pstmt = conn.prepareStatement(sql1);
        //填充sql(填充?占位符)
        pstmt.setInt(1, 12);
        pstmt.setString(2,"每日星座运势API接口");
        //执行预编译对象
        ResultSet res = pstmt.executeQuery();
        //解析结果
        while (res.next()) {
            //易错点,这里的索引是从1开始的
            APIinstanceClass aPI= new APIinstanceClass(res.getInt(1),res.getString(2),res.getString(3),res.getString(4) );
            aPI.toString();
        }
        conn.close();
    }

数据库连接池的使用

1 下载jar包

本来要去官网的但是进不去!

好吧我们使用下面的网站下载去

druid-1.1.9.jar下载及Maven、Gradle引入代码,pom文件及包内class -时代Java (nowjava.com)

2 导入jar包

 
3 新建配置文件

如下两图,看图操作

4 配置配置文件

配置资源文件,代码如下

注意修改为自己的用户名与密码

driverClassName=com.mysql.jdbc.Driver
#不指定数据库
url=jdbc:mysql://127.0.0.1:3306?useSSL=false&useServerPrepStmts=true
#指定数据库
#url=jdbc:mysql://127.0.0.1:3306/数据库名?useSSL=false&useServerPrepStmts=true
username=root
password=xxx
#初始化连接数量
initialSize=5
#最大连接数
maxActive=10
# 最大等待时间
maxWait=3000

5 开始使用

Java代码

思路

1 先使用inputstream读取配置文件

2 把配置文件传给DruidDataSourceFactory.createDataSource,同时创建了数据库连接池对象

3 将数据库连接池对象保存为全局静态变量

4 通过全局变量进行调用(.getConnection())获取数据库连接对象

import com.alibaba.druid.*;
import com.alibaba.druid.pool.DruidDataSourceFactory;

import javax.sql.DataSource;
import java.io.FileInputStream;
import java.sql.*;
import java.util.Properties;

public class Main {

    static DataSource Cool;
    public static void main(String[] args) throws SQLException {
        try {
            initDbCool();
            selectDBcool();
        } catch (Exception e) {
            throw new RuntimeException(e);
        }

    }

    //使用数据库连接池
    public static void selectDBcool()throws Exception {
        //获取数据库连接
        Connection conn= Cool.getConnection();
        //接下来的操作都一样了
    }

    //初始化数据库连接池
    public static void initDbCool() throws Exception {
        //1.导入jar包
        //2.定义配置文件
        //3. 加载配置文件

        //新建配置文件对象
        Properties prop = new Properties();
        //这里是加载配置文件()中是你的配置文件的目录
        prop.load(new FileInputStream("JDBCLearn/src/druid.properties"));

        //4. 获取连接池对象
        //然后我们新建一个全局静态DataSource变量方便我们使用
        Cool= DruidDataSourceFactory.createDataSource(prop);
    }

}

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

桂亭亭

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值