package jdbc;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.*;
import org.apache.solr.client.solrj.SolrServerException;
import solrj.LinkSolrJ;
public class Mysql {
private int m_id = 0;
private Connection m_con = null;
private Statement m_stat = null;
private ResultSet m_result = null;
private void readMaxId() throws IOException
{
String input = "configure.dat";
BufferedReader reader = new BufferedReader(new FileReader(input));
String temp = reader.readLine();
m_id = Integer.valueOf(temp);
reader.close();
}
private void writeMaxId() throws IOException
{
String output = "configure.dat";
PrintWriter writer = new PrintWriter(new FileWriter(output));
writer.print(m_id);
writer.close();
}
public void linkMySQL(String _database, String _usr, String _pwd)
throws ClassNotFoundException, SQLException, IOException
{
readMaxId();
//1. 加载MySQL的JDBC驱动
Class.forName("org.gjt.mm.mysql.Driver");
System.out.println("加载JDBC驱动!");
//2. 建立数据库连接
m_con = DriverManager.getConnection(_database, _usr, _pwd);
System.out.println("建立链接!");
//3. 创建执行SQL语句的声明
m_stat = m_con.createStatement();
//4. 执行查询,返回结果
String sql = "select * from profile where id > " + m_id;
m_result = m_stat.executeQuery(sql);
}
public void processData(String _url) throws SQLException, SolrServerException, IOException
{
LinkSolrJ linkSolr = new LinkSolrJ(_url);
int _id;
String _nickname;
String _email;
String _fullname;
String _sms;
int count = 0;
while(m_result.next())
{
//id
_id = m_result.getInt("id");
if(_id > m_id)
{
m_id = _id;
}
//nickname
_nickname = m_result.getString("nickname");
//email
_email = m_result.getString("email");
//fullname
_fullname = m_result.getString("fullname");
if(m_result.wasNull())
{
_fullname = "";
}
//sms
_sms = m_result.getString("sms");
linkSolr.addData(_id, _nickname, _email, _fullname, _sms);
System.out.println(++count + ":" + _id);
}
linkSolr.commitDocs();
writeMaxId();
System.out.println("导出数据库成功!");
System.out.println("新导出用户数据:" + count);
//关闭数据库连接
m_stat.close();
m_con.close();
}
}