【无标题】ResultSet获取行数据

前言

根据业务需求需要做动态报表功能,根据前端传入SQL执行后获取结果集,前端传入的SQL不确定 ,所以无法像传统形式根据参数获取结果集,所以SQL执行完,直接返回结果集。

JDBC执行SQL步骤

//1.加载驱动
Class.forName(Driver); 
//2.建立连接
Connection connection = DriverManager.getConnection(URL, USER, PASSWORD);
Statement state = connection.createStatement();
//3.执行sql
ResultSet resultSet = state.executeQuery(sql);
//解析数据
while (resultSet.next()) {
···
}
//4.关闭连接
resultSet.close();
state.close();
connection.close();

解析数据

在这里插入图片描述
解析数据根据写的sql语句通过下标解析查询结果

直接获取一行数据

通过ResultSet提供的方法getMetaData()获取元数据
在这里插入图片描述
在这里插入图片描述
可以通过此方法获取行信息

使用

  public JSONArray preview(String sql) {
        Connection connection = null;
        Statement state = null;
        ResultSet resultSet = null;
        // 创建一个空的JSON数组
        JSONArray jsonArray = new JSONArray();
        try {
            //1.加载驱动
            Class.forName("com.mysql.cj.jdbc.Driver");
            //2.建立连接
            connection = DriverManager.getConnection(URL, USER, PASSWORD);
            state = connection.createStatement();
            //3.执行sql
            resultSet = state.executeQuery(sql);

            //获取结果集的元数据
            ResultSetMetaData metaData = resultSet.getMetaData();
            //获取列的数量
            int columnCount = metaData.getColumnCount();
            while (resultSet.next()) {
                JSONObject jsonObject = new JSONObject();
                for (int i = 1; i <= columnCount; i++) {
                    // 获取列的名称
                    String columnName = metaData.getColumnName(i);
                    // 获取列的值
                    Object columnValue = resultSet.getObject(i);
                    jsonObject.put(columnName, columnValue);
                }
                jsonArray.add(jsonObject);
            }
        } catch (Exception e) {
            //报错执行语句
            log.error(StrFormatter.format("sql语句拼写错误或数据库连接错误,报错:{}", e.getMessage()));
            throw new RunTimeException("sql语句拼写错误或数据库连接错误");
        } finally {
            try {
                //关闭resultSet
                if (resultSet != null) {
                    resultSet.close();
                }
            } catch (SQLException e) {
                //报错执行语句
                log.error(StrFormatter.format("resultSet关闭错误,报错:{}", e.getMessage()));
            } finally {
                try {
                    //关闭state
                    if (state != null) {
                        state.close();
                    }
                } catch (SQLException e) {
                    log.error(StrFormatter.format("state关闭错误,报错:{}", e.getMessage()));
                } finally {
                    try {
                        //4.关闭连接
                        if (connection != null) {
                            connection.close();
                        }
                    } catch (SQLException e) {
                        //报错执行语句
                        log.error(StrFormatter.format("connection关闭错误,报错:{}", e.getMessage()));
                    }
                }

            }
        }

        return jsonArray;
    }

1.获取元数据

ResultSetMetaData metaData = resultSet.getMetaData();

2.获取列的数量

int columnCount = metaData.getColumnCount();

3.获取列名和值

String columnName = metaData.getColumnName(i);
Object columnValue = resultSet.getObject(i);

4.组装成JSON对象

jsonObject.put(columnName, columnValue);

需要转换具体实体类可以再做处理
5.用JSONArray接收结果集

jsonArray.add(jsonObject);
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 可以参考以下代码:import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.URL; import java.net.URLConnection; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet;public class JavaCrawler { public static void main(String[] args) throws Exception { String url = "http://www.ruoyi.vip/"; URL urlObject = new URL(url); URLConnection uc = urlObject.openConnection(); BufferedReader in = new BufferedReader(new InputStreamReader(uc.getInputStream())); String inputLine = null; StringBuffer sb = new StringBuffer(); while ((inputLine = in.readLine()) != null) { sb.append(inputLine); } in.close(); //数据库连接 Class.forName("com.mysql.jdbc.Driver"); String url2 = "jdbc:mysql://localhost:3306/ruoyi"; String username = "root"; String password = "123456"; Connection conn = DriverManager.getConnection(url2, username, password); String sql = "insert into ruoyi_pages (url, content) values (?, ?)"; PreparedStatement pstmt = conn.prepareStatement(sql); pstmt.setString(1, url); pstmt.setString(2, sb.toString()); int result = pstmt.executeUpdate(); System.out.println("写入" + result + "条数据"); pstmt.close(); conn.close(); } } ### 回答2: 编写Java代码来爬取若依系统页面数据并写入数据库需要用到一些库和技术。下面是一个简单的示例代码: ```java import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.select.Elements; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.SQLException; public class WebCrawler { public static void main(String[] args) { String url = "jdbc:mysql://localhost:3306/database_name"; String username = "username"; String password = "password"; try { Connection connection = DriverManager.getConnection(url, username, password); // 指定要爬取的页面URL String pageUrl = "http://example.com"; Document document = Jsoup.connect(pageUrl).get(); // 使用CSS选择器定位到要爬取的数据 Elements elements = document.select("h3.title"); for (Element element : elements) { String title = element.text(); // 获取标题 // 将数据写入数据库 String sql = "INSERT INTO table_name (title) VALUES (?)"; PreparedStatement statement = connection.prepareStatement(sql); statement.setString(1, title); statement.executeUpdate(); } connection.close(); System.out.println("数据写入成功!"); } catch (SQLException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } } } ``` 上述代码中,我们使用Jsoup库来处理HTML页面,通过连接到指定的页面URL并使用CSS选择器来定位要爬取的数据。然后,我们使用JDBC来连接到数据库,将数据写入到数据库中的特定表中。 请根据实际情况修改代码中的数据库连接信息、页面URL、选择器和插入语句,以适应你要爬取的若依系统页面数据并写入数据库。 ### 回答3: import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.SQLException; public class Spider { public static void main(String[] args) throws IOException, SQLException { String url = "http://example.com"; // 替换为你要爬取的若依系统页面的URL String htmlContent = getHtml(url); parseAndSaveData(htmlContent); } public static String getHtml(String urlString) throws IOException { StringBuilder content = new StringBuilder(); URL url = new URL(urlString); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream())); String line; while ((line = reader.readLine()) != null) { content.append(line).append("\n"); } reader.close(); return content.toString(); } public static void parseAndSaveData(String htmlContent) throws SQLException { // 解析htmlContent获取你想要的数据,示例仅做演示 String data = htmlContent.substring(htmlContent.indexOf("<title>") + 7, htmlContent.indexOf("</title>")); Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/database", "username", "password"); String sql = "INSERT INTO table_name (column_name) VALUES (?)"; PreparedStatement statement = connection.prepareStatement(sql); statement.setString(1, data); statement.executeUpdate(); statement.close(); connection.close(); } } 上述代码首先通过getHtml方法获取指定URL的页面内容,然后调用parseAndSaveData方法来解析页面的HTML内容并获取需要的数据,再将数据写入数据库中,示例代码仅为演示,具体解析和写入数据库的操作需要根据你要爬取的若依系统页面的结构和数据类型来进修改和适配。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值