果粒果粒 2025-05-09 20:34 采纳率: 14.3%
浏览 12
已结题

API获取的数据无法存储到数据库中

想请问大家天气查询系统为什么host和api key都没有问题,通过网址可以访问到天气数据,但是数据库就是没数据啊😭

  • 写回答

4条回答 默认 最新

  • 阿里嘎多学长 2025-05-09 20:35
    关注

    阿里嘎多学长整理AIGC生成,因移动端显示问题导致当前答案未能完全显示,请使用PC端查看更加详细的解答过程

    问题分析

    用户的问题是,使用API获取的数据无法存储到数据库中,虽然可以通过网址访问到天气数据,但是数据库中没有数据。

    解决方案

    1. 检查API请求是否正确
      • 使用Postman或其他HTTP客户端工具测试API请求是否正确,检查是否返回正确的数据。
    2. 检查数据库连接是否正确
      • 检查数据库连接是否正确,确保可以连接到数据库。
    3. 检查数据存储是否正确
      • 检查数据存储是否正确,确保数据被正确地存储到数据库中。
    4. 检查数据类型是否正确
      • 检查数据类型是否正确,确保数据类型与数据库中定义的类型相匹配。

    代码示例

    以下是一个简单的Java示例,使用Apache HttpClient获取API数据,并将数据存储到数据库中:

    import org.apache.http.HttpResponse;
    import org.apache.http.client.HttpClient;
    import org.apache.http.client.methods.HttpGet;
    import org.apache.http.impl.client.HttpClients;
    import org.json.JSONObject;
    
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.SQLException;
    
    public class WeatherData {
        public static void main(String[] args) {
            // 设置API请求地址
            String url = "https://api.example.com/weather";
    
            // 设置API key
            String apiKey = "your_api_key";
    
            // 设置数据库连接信息
            String dbUrl = "jdbc:mysql://localhost:3306/weather";
            String dbUser = "your_db_user";
            String dbPassword = "your_db_password";
    
            // 获取API数据
            HttpClient client = HttpClients.createDefault();
            HttpGet get = new HttpGet(url);
            get.setHeader("Authorization", "Bearer " + apiKey);
            HttpResponse response = client.execute(get);
    
            // 解析API数据
            BufferedReader reader = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
            String line;
            StringBuilder sb = new StringBuilder();
            while ((line = reader.readLine()) != null) {
                sb.append(line);
            }
            reader.close();
            String jsonData = sb.toString();
            JSONObject jsonObject = new JSONObject(jsonData);
    
            // 存储数据到数据库
            try (Connection conn = DriverManager.getConnection(dbUrl, dbUser, dbPassword);
                 PreparedStatement pstmt = conn.prepareStatement("INSERT INTO weather (temperature, humidity) VALUES (?, ?)")) {
                pstmt.setFloat(1, jsonObject.getFloat("temperature"));
                pstmt.setFloat(2, jsonObject.getFloat("humidity"));
                pstmt.executeUpdate();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
    

    结论

    通过检查API请求、数据库连接和数据存储,可以解决API获取的数据无法存储到数据库中的问题。

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 5月18日
  • 创建了问题 5月9日