网络爬虫之java基础篇QueryRunner(Ⅲ)

目录

1、Java操作数据库

如何将爬虫爬取的数据存储下来也是我们关注的问题之前,常用的存储方式有.txt,mysql,hbase等。前面已经介绍了Java输入流输出流操作文本的方式,现在主要介绍几种Java操作mysql的方式。

java操作数据库第一种方法

这种方法,是操作数据库的最简单,也是最原始的方法。

package crawlerTest;

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

public class MysqlConnectionTest {

    public static void main(String[] args) throws ClassNotFoundException, SQLException {
        Connection connection=null;           //数据库连接的获取
        Statement stmt=null;                    //创建Statement对象
        ResultSet rst=null;                 //创建数据库执行对象
        String driver="com.mysql.jdbc.Driver";   //数据库驱动
        String dbURL="jdbc:mysql://127.0.0.1:3306/test";  //操作的数据库地址,端口及库名
        String user = "root"; //数据库用户名
        String password = "112233"; //数据库密码
        Class.forName(driver);            //驱动注册

        try {
            connection = DriverManager.getConnection(dbURL,user,password);
        } catch (SQLException e) {
            e.printStackTrace();
        }     
        //连接数据库     
        stmt = connection.createStatement();
        String sql="select * from auto_forum_comments limit 1,100"; //需要查询的语句
        rst=stmt.executeQuery(sql);
        while (rst.next()) {
            System.out.println(rst.getString(6));              //取第6列数据

        }
        rst.close();
        stmt.close();
        connection.close();
    }

}

java操作数据库的QueryRunner方法

QueryRunner是apache下面的开源操作数据库的工具,其是一款非常实用的操作数据库的工具,也是本人最常用的一种工具。其中包括batch()、update()、insert()等常用数据操作方法,下面我通过具体的程序来说明这些方法。
首先,我们要创建一个对象类(model),用来封装对象。如下图所示,为我们在model下建的两个类。其中Address类为本案例所用的类,主要用来封装数据库中的数据(我们需要操作的数据表),如下图所示。
这里写图片描述
这里写图片描述

package model;

public class Address {
    private String addr_id;
    private String addr_car;
    private String addr_url;
    private String addr_forum;
    private String craw_time;
    //在ecliplse中使用快捷键, shift+alt+s快捷生成set、get方法
    public String getAddr_id() {
        return addr_id;
    }
    public void setAddr_id(String addr_id) {
        this.addr_id = addr_id;
    }
    public String getAddr_car() {
        return addr_car;
    }
    public void setAddr_car(String addr_car) {
        this.addr_car = addr_car;
    }
    public String getAddr_url() {
        return addr_url;
    }
    public void setAddr_url(String addr_url) {
        this.addr_url = addr_url;
    }
    public String getAddr_forum() {
        return addr_forum;
    }
    public void setAddr_forum(String addr_forum) {
        this.addr_forum = addr_forum;
    }
    public String getCraw_time() {
        return craw_time;
    }
    public void setCraw_time(String craw_time) {
        this.craw_time = craw_time;
    }

}

接着我们创建封装数据库,用户名及密码的类,如下图所示。
这里写图片描述

package db;

import javax.sql.DataSource;

import org.apache.commons.dbcp2.BasicDataSource;

public class MyDataSource {

    public static DataSource getDataSource(String connectURI){

        BasicDataSource ds = new BasicDataSource();
        ds.setDriverClassName("com.mysql.jdbc.Driver");
        ds.setUsername("root");             
        ds.setPassword("112233");                
        ds.setUrl(connectURI);
        return ds;

    }
}

下面表示写操作数据库语句了

package crawlerTest;
import java.sql.SQLException;
import java.util.List;
import javax.sql.DataSource;
import model.Address;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.ResultSetHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import db.MyDataSource;

public class QueryRunnerTest {
    static final Log logger = LogFactory.getLog(QueryRunnerTest.class);
    public static void main(String[] args) throws ClassNotFoundException, SQLException {
        /****** 所要操作的数据库******/
        DataSource ds = MyDataSource.getDataSource("jdbc:mysql://127.0.0.1:3306/test");
        QueryRunner qr = new QueryRunner(ds);
        ResultSetHandler<List<Address>> h = new BeanListHandler<Address>(Address.class);
        /****** 执行sql语句获取数据******/
        List<Address> CarData = qr.query("SELECT addr_id,addr_car FROM auto_forum_comments", h);
        /****** 遍历输出数据******/
        for (Address car:CarData) {
            logger.info("CarId:"+car.getAddr_id()+"\tcarName:"+car.getAddr_car());
        }
    }
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值