ResultSet的介绍与使用

相关文章

ResultSet

ResultSet是我们使用jdbc连接时,查询的一个返回结果集,ResultSet resultSet = stmt.executeQuery(sql),下面就使用例子介绍ResultSet的使用

例子是通过jdbc连接查account表中的数据,然后用实体类Account封装起来,返回这个类的集合。 

jdbc工具类代码

package com.lingaolu.Utils;

import java.io.FileReader;
import java.io.IOException;
import java.net.URL;
import java.sql.*;
import java.util.Properties;

/**
 * @author 林高禄
 * @create 2020-06-23-11:12
 */
public class JdbcUtils {
    private static String driver;
    private static String url;
    private static String userName;
    private static String pw;

    static{
        try {
            Properties p = new Properties();
            ClassLoader classLoader = JdbcUtils.class.getClassLoader();
            // 这个路径相对于src的路径来说
            URL resource = classLoader.getResource("com/lingaolu/file/jdbc.properties");
            String path = resource.getPath();
            p.load(new FileReader(path));
            driver = p.getProperty("driver");
            url = p.getProperty("url");
            userName = p.getProperty("user");
            pw = p.getProperty("password");
            Class.forName(driver);
        } catch (IOException e) {
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }

    public static Connection createConnection() throws SQLException {
        return DriverManager.getConnection(url, userName, pw);
    }

    public static void close(Statement stmt,Connection con){
        if(null != stmt){
            try {
                stmt.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if(null != con){
            try {
                con.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }

    public static void close(ResultSet set,Statement s,Connection con){
        if(null != set){
            try {
                set.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        close(s,con);
    }
}

Account实体类代码

package com.lingaolu.jdbcConnector;

/**
 * @author 林高禄
 * @create 2020-06-24-8:28
 */
public class Account {
    private int id;
    private String name;
    private double balance;
    private int myAge;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public double getBalance() {
        return balance;
    }

    public void setBalance(double balance) {
        this.balance = balance;
    }

    public int getMyAge() {
        return myAge;
    }

    public void setMyAge(int myAge) {
        this.myAge = myAge;
    }

    @Override
    public String toString() {
        return "Account{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", balance=" + balance +
                ", myAge=" + myAge +
                '}';
    }
}

测试Demo3的代码

package com.lingaolu.jdbcConnector;

import com.lingaolu.Utils.JdbcUtils;

import java.sql.*;
import java.util.ArrayList;
import java.util.List;

/**
 * @author 林高禄
 * @create 2020-06-23-17:27
 */
public class Demo3 {
    public static void main(String[] args) {
        String sql = "select * from account";
        List<Account> accounts = fineAccount(sql);
        accounts.forEach(System.out::println);
        System.out.println("----------------------------------");
        sql = "select * from account where name='张三'";
        accounts = fineAccount(sql);
        accounts.forEach(System.out::println);
    }

    public static List<Account> fineAccount(String sql){
        Connection con = null;
        Statement stmt = null;
        ResultSet resultSet = null;
        List<Account> rerurnList = new ArrayList<>();
        try {
            con = JdbcUtils.createConnection();
            stmt = con.createStatement();
            resultSet = stmt.executeQuery(sql);
            Account acc = null;
            while(resultSet.next()){
                // 引号里的字段要与表里的一样
                int id = resultSet.getInt("id");
                String name = resultSet.getString("name");
                double balance = resultSet.getDouble("balance");
                int age = resultSet.getInt("age");

                acc = new Account();
                acc.setId(id);
                acc.setName(name);
                acc.setBalance(balance);
                acc.setMyAge(age);

                rerurnList.add(acc);
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            JdbcUtils.close(resultSet,stmt,con);
        }
        return rerurnList;
    }
}

表中的数据

运行输出:

Account{id=1, name='张三', balance=500.0, myAge=17}
Account{id=2, name='李四', balance=1000.0, myAge=16}
Account{id=7, name='张三', balance=600.0, myAge=19}
Account{id=11, name='林帅', balance=20000.0, myAge=18}
----------------------------------
Account{id=1, name='张三', balance=500.0, myAge=17}
Account{id=7, name='张三', balance=600.0, myAge=19}

结果与预期的一致

  • 20
    点赞
  • 110
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
MySQL-Proxy是一个用于MySQL数据库的代理服务器,它可以拦截和修改MySQL协议中的数据包,并允许你在数据包到达MySQL服务器之前或之后执行自定义操作。使用MySQL-Proxy可以实现很多有用的功能,如负载均衡、查询过滤、缓存优化等。下面介绍一下如何使用MySQL-Proxy,具体步骤如下: 1. 安装MySQL-Proxy MySQL-Proxy可以从官方网站下载,也可以使用包管理器进行安装。以Ubuntu为例,可以使用以下命令进行安装: ``` sudo apt-get install mysql-proxy ``` 2. 创建配置文件 MySQL-Proxy的配置文件为Lua脚本,需要在配置文件中指定监听端口、代理MySQL服务器的地址和端口、以及自定义的Lua脚本等。可以使用以下命令创建一个简单的配置文件: ``` sudo nano /etc/mysql-proxy.cnf ``` 然后在配置文件中添加以下内容: ``` [mysql-proxy] daemon = true proxy-address = 127.0.0.1:3306 proxy-backend-addresses = 127.0.0.1:3307 proxy-lua-script = /etc/mysql-proxy.lua ``` 其中,`proxy-address`是MySQL-Proxy监听的地址和端口,`proxy-backend-addresses`是要代理的MySQL服务器的地址和端口,`proxy-lua-script`是Lua脚本的路径。 3. 编写Lua脚本 MySQL-Proxy的Lua脚本可以拦截MySQL协议中的数据包,并对其进行修改或者过滤。可以根据实际需求编写自己的Lua脚本。以下是一个简单的例子,它会将所有的SELECT语句转换为SHOW TABLES语句: ``` function read_query(packet) if packet:byte() == proxy.COM_QUERY then if packet:sub(2, 7) == "SELECT" then local new_packet = packet:gsub("SELECT", "SHOW TABLES") proxy.queries:append(1, new_packet, {resultset_is_needed = true}) return proxy.PROXY_SEND_QUERY end end end ``` 4. 启动MySQL-Proxy 使用以下命令启动MySQL-Proxy: ``` sudo mysql-proxy --defaults-file=/etc/mysql-proxy.cnf ``` 然后就可以在客户端中连接MySQL-Proxy并进行查询了。 以上就是使用MySQL-Proxy的基本步骤。实际上,MySQL-Proxy还支持很多高级功能,如多个MySQL服务器的负载均衡、缓存优化、查询路由等,可以根据实际需求进行配置。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

深知她是一场梦

你打不打赏,我都会一直写博客

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

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

打赏作者

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

抵扣说明:

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

余额充值