JDBC(六)——JDBC读取数据表,将数据存入对象中,并将对象存储到集合中

【问题】

JDBC读取Product数据表,将数据存入Product对象中,并将对象存储到集合中

【代码】

JDBC工具类

package cn.itcast.jdbcutil;
/*
 *  实现JDBC的工具类
 *  定义方法,直接返回数据库的连接对象
 *  
 *  写关闭方法
 */

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class JDBCUtils {
	private JDBCUtils(){}
	private static Connection con ;
	
	static{
		try{
			Class.forName("com.mysql.jdbc.Driver");
			String url = "jdbc:mysql://localhost:3306/day07";
			String username = "root";
			String password = "root";
			con = DriverManager.getConnection(url, username, password);
		}catch(Exception ex){
			throw new RuntimeException(ex+"数据库连接失败");
		}
	}
	
	/*
	 * 定义静态方法,返回数据库的连接对象
	 */
	public static Connection getConnection(){
		return con;
	}
	
	
	public static void close(Connection con,Statement stat){
		 
		 if(stat!=null){
			 try{
				 stat.close();
			 }catch(SQLException ex){}
		 }
		 
		 if(con!=null){
			 try{
				 con.close();
			 }catch(SQLException ex){}
		 }
		 
	}
	
	
	public static void close(Connection con,Statement stat , ResultSet rs){
		 if(rs!=null){
			 try{
				 rs.close();
			 }catch(SQLException ex){}
		 }
		 
		 if(stat!=null){
			 try{
				 stat.close();
			 }catch(SQLException ex){}
		 }
		 
		 if(con!=null){
			 try{
				 con.close();
			 }catch(SQLException ex){}
		 }
		 
	}
}

Product对象

package it.cast.domain;

public class Product {
	private int pid;
	private String pname;
	private double price;
	private int cno;
	
	public Product() {}
	
	public Product(int pid, String pname, double price, int cno) {
		super();
		this.pid = pid;
		this.pname = pname;
		this.price = price;
		this.cno = cno;
	}

	public int getPid() {
		return pid;
	}

	public void setPid(int pid) {
		this.pid = pid;
	}

	public String getPname() {
		return pname;
	}

	public void setPname(String pname) {
		this.pname = pname;
	}

	public double getPrice() {
		return price;
	}

	public void setPrice(double price) {
		this.price = price;
	}

	public int getCno() {
		return cno;
	}

	public void setCno(int cno) {
		this.cno = cno;
	}

	@Override
	public String toString() {
		return "Product [pid=" + pid + ", pname=" + pname + ", price=" + price + ", cno=" + cno + "]";
	}
	
	
	
}

执行代码

package cn.itcast.demo;


import java.sql.Connection;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
import com.mysql.jdbc.PreparedStatement;
import cn.itcast.jdbcutil.JDBCUtils;
import it.cast.domain.Product;

public class JDBCDemo {

	public static void main(String[] args) throws Exception {
		//获取数据库连接对象
		Connection con = JDBCUtils.getConnection();
		//获取sql执行语句
		String sql = "SELECT * FROM product;";
		//获取sql语句执行者对象
		PreparedStatement pst = (PreparedStatement) con.prepareStatement(sql);
		//调用查询方法获得结果集
		ResultSet rs = pst.executeQuery();
		//创建集合对象
		List<Product> list = new ArrayList<Product>();
		
		while (rs.next()) {
			//获取每个列的数据,封装到Product对象中
			Product product = new Product(rs.getInt("pid"),rs.getString("pname"),rs.getDouble("price"),rs.getInt("cno"));
			//把封装好的Product对象存储到list中
			list.add(product);
		}
		
		//遍历list集合
		for (Product product:list) {
			System.out.println(product);
		}
		
		JDBCUtils.close(con, pst, rs);
	}

}

【结果截图】

  • 6
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要将ClickHouse查询出的数据存入MySQL,可以使用以下步骤: 1. 在ClickHouse执行查询语句,将结果导出为CSV文件。例如,假设我们要查询clickhouse`mytable`的所有数据,可以执行以下命令将结果导出为`result.csv`文件: ``` clickhouse-client -u username -p password --format_csv_with_names --query "SELECT * FROM mytable" > result.csv ``` 注意,这里需要替换`username`和`password`为实际的用户名和密码。 2. 将导出的CSV文件上传到Linux服务器。 3. 使用Java程序读取CSV文件,并将数据插入到MySQL。以下是一个简单的Java程序示例: ```java import java.io.BufferedReader; import java.io.FileReader; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.SQLException; public class ImportDataToMysql { public static void main(String[] args) { String url = "jdbc:mysql://localhost:3306/mydatabase"; String user = "username"; String password = "password"; String csvFilePath = "/path/to/result.csv"; try (Connection conn = DriverManager.getConnection(url, user, password); BufferedReader reader = new BufferedReader(new FileReader(csvFilePath))) { String line; while ((line = reader.readLine()) != null) { String[] columns = line.split(","); PreparedStatement pstmt = conn.prepareStatement("INSERT INTO mymysqltable VALUES (?, ?, ...)"); // 根据实际结构设置插入语句的列和对应的值 pstmt.setString(1, columns[0]); // 第一列 pstmt.setInt(2, Integer.parseInt(columns[1])); // 第二列 // ... pstmt.executeUpdate(); } } catch (SQLException | IOException e) { e.printStackTrace(); } } } ``` 在上面的示例代码,我们假设MySQL数据名为`mymysqltable`,并且结构与导出的CSV文件的列对应。我们使用Java的JDBC API连接到MySQL数据库,并逐行读取CSV文件数据,将每行数据插入到MySQL。 注意,这里需要根据实际结构修改插入语句的列和对应的值,并替换`url`、`user`、`password`和`csvFilePath`为实际的数据库连接信息和CSV文件路径。 4. 执行Java程序,等待数据插入完成。 通过以上步骤,我们可以将ClickHouse查询出的数据存入到MySQL。当然,如果需要频繁地进行数据同步,可以考虑使用定时任务或者实时数据同步工具,以提高效率和准确性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值