⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 person.java

📁 利用多线程从搜索引擎下载网页并提取数据到数据库。
💻 JAVA
字号:
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

/**
 * Summary of one person
 * 
 * @author james
 * 
 */
public class Person {

	public int id;

	public String first_name = "";

	public String last_name = "";

	public String career_heading = "";

	public String location = "";

	public int recommendation_count;

	public int connection_count;

	public int search_result_id;

	public String profile_cached_html;

	public String profile_cached_url;

	protected Connection cnn;

	private static int newID;

	/**
	 * @param args
	 */
	public static void main(String[] args) {

	}

	public Person(Connection cnn, int urlID, String page) {
		// this.cnn=DataAccess.getNewConnection();
		this.cnn = cnn;
		this.search_result_id = urlID;
		this.profile_cached_html = page;
	}

	public synchronized void insertPageOnly(int urlID, String html) {
		PreparedStatement ps;
		try {
			ps = cnn
					.prepareStatement("insert into people(profile_cached_url_id,profile_cached_html) select ?,?");
			ps.setInt(1, urlID);
			ps.setString(2, html);
			ps.execute();
		} catch (SQLException e) {
			// Supress warning, mostly are duplicate inserts .
			e.printStackTrace();
		}

	}

	public synchronized void insert() throws SQLException {
		insertToDB();
		// printMe();
	}

	private void insertToDB() throws SQLException {
		if (MTProfile.generateID)
			insertToDBwKey();
		else
			insertToDBwoKey();
	}

	private void insertToDBwKey() throws SQLException {
		PreparedStatement ps;

		ps = cnn
				.prepareStatement("insert into people "
						+ "( first_name,last_name,career_heading,location,recommendation_count,connection_count, search_result_id,profile_cached_html,parse_tag,id)"
						+ " select ?,?,?,?,?,?,?,?,?,?");
		ps.setString(1,  first_name.length() > 45 ? first_name
				.substring(0, 45) : first_name);
		ps.setString(2,  last_name.length() > 45 ? last_name
				.substring(0, 45) : last_name);
		ps.setString(3, career_heading.length() > 145 ? career_heading
				.substring(0, 145) : career_heading);
		ps.setString(4, location);
		ps.setInt(5, recommendation_count);
		ps.setInt(6, connection_count);
		ps.setInt(7, search_result_id);
		ps.setString(8,
				profile_cached_html.length() > 64000 ? profile_cached_html
						.substring(0, 64000) : profile_cached_html);
		ps.setInt(9, 1);
		this.id=getNewID();
		ps.setInt(10, this.id);
		ps.execute();

	}

	private static synchronized int getNewID() throws SQLException {
		if (newID == 0) {
			PreparedStatement ps;
			ps = DataAccess.getConnection().prepareStatement("select max(id) as id from people");
			ResultSet rs=ps.executeQuery();
			rs.next();
			newID=rs.getInt(1);
		}
		return ++newID;
	}

	private void insertToDBwoKey() throws SQLException {
		PreparedStatement ps;

		ps = cnn
				.prepareStatement("insert into people "
						+ "( first_name,last_name,career_heading,location,recommendation_count,connection_count, search_result_id,profile_cached_html,parse_tag)"
						+ " select ?,?,?,?,?,?,?,?,?");
		ps.setString(1, first_name);
		ps.setString(2, last_name);
		ps.setString(3, career_heading.length() > 145 ? career_heading
				.substring(0, 145) : career_heading);
		ps.setString(4, location);
		ps.setInt(5, recommendation_count);
		ps.setInt(6, connection_count);
		ps.setInt(7, search_result_id);
		ps.setString(8,
				profile_cached_html.length() > 65535 ? profile_cached_html
						.substring(0, 65535) : profile_cached_html);
		ps.setInt(9, 1);
		ps.execute();
		ResultSet rs = ps.getGeneratedKeys();
		if (rs.next())
			this.id = rs.getInt(1);
		else
			throw new SQLException("Failed to generate a key.");
	}

	public void printMe() {

		System.out.println(this.first_name);
		System.out.println(this.last_name);
		System.out.println(this.career_heading);
		System.out.println(this.location);
		System.out.println(this.recommendation_count);
		System.out.println(this.connection_count);
	}

	public void update() throws SQLException {
		updateDB();

	}

	private void updateDB() throws SQLException {
		PreparedStatement ps;

		ps = cnn
				.prepareStatement("update people set first_name=?,last_name=?,career_heading=?,location=?,recommendation_count=?,connection_count=? where id=?");
		ps.setString(1, first_name);
		ps.setString(2, last_name);
		ps.setString(3, career_heading);
		ps.setString(4, location);
		ps.setInt(5, recommendation_count);
		ps.setInt(6, connection_count);
		ps.setInt(7, id);

		ps.execute();

	}

	public void setParsed() throws SQLException {

		PreparedStatement ps = cnn
				.prepareStatement("update people set parse_tag=parse_tag+1 where id=?");
		ps.setInt(1, id);
		ps.execute();

	}

	public void appendTo(StringBuilder sb) {
		sb.append(this.first_name);
		sb.append("\r\n");
		sb.append(this.last_name);
		sb.append("\r\n");
		sb.append(this.career_heading);
		sb.append("\r\n");
		sb.append(this.location);
		sb.append("\r\n");
		sb.append(this.recommendation_count);
		sb.append("\r\n");
		sb.append(this.connection_count);
		sb.append("\r\n");

	}

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -