package org.yuqing.database;
/**
* 将抓下来的数据存入数据库,当前只支持mysql
* @author 北邮君君 [email protected] 2011-9-1
*/
import java.lang.reflect.Field;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import org.yuqing.bean.*;public class WeiboDb
{
private Connection connect = null;
Statement stmt = null;
public WeiboDb()
{
this.reginster();
this.conDB();
try
{
stmt = this.connect.createStatement();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* 加载mysql驱动
*/
public void reginster()
{
try {
Class.forName("com.mysql.jdbc.Driver"); //加载MYSQL JDBC驱动程序
// System.out.println("Success loading Mysql Driver!");
}
catch (Exception e) {
System.out.print("Error loading Mysql Driver!");
e.printStackTrace();
}
}
/**
* 连接数据库
* @return 连接对象
*/
public Connection conDB()
{
Connection connect = null;
try {
connect = DriverManager.getConnection(
"jdbc:mysql://localhost/weibo?useUnicode=true&characterEncoding=utf-8", "root", "123456");
//连接URL为 jdbc:mysql//服务器地址/数据库名
//后面的2个参数分别是登陆用户名和密码
System.out.println("Success connect Mysql server!");
}
catch (Exception e)
{
System.out.print("get data error!");
e.printStackTrace();
}
this.connect = connect;
return connect;
}
/**
* 向一个表中插入对象
* @param bib
* @param table
*/
public void insert(Object bib, String table)
{
String insertSql = getInsertSql(bib,table);
try {
stmt.clearBatch();
stmt.execute(insertSql);
}
catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
System.out.println(insertSql);
}
finally
{
/* try
{
if(stmt!=null)
stmt.close();
stmt = null;
}
catch(Exception e)
{e.printStackTrace();}*/
}
}
/**
*
* @param查询table里的信息 条件是situation
* @param table 要插入的表
* @return 结果ResultSet对象
*/
private ResultSet Query(String table,String situation)
{
//取得对象每一个成员变量的名字
//查询以条件为situation的结果
String sql = " select * from "+ table +" "+situation +";";
// System.out.println(sql); ResultSet r = null;
try {
stmt.clearBatch();
r = stmt.executeQuery(sql);
}
catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
/* try {
if(stmt!=null)
{
stmt.close();
stmt = null;
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}*/
} return r;
}
/**
* 插入用户数据
* @param bib
* @param table
*/
public void insertBaseinfo(BaseInfoBean bib)
{
String situation = " where id="+ bib.getId();
ResultSet r = Query("baseinfo", situation);
try
{
if(r.next() == false && bib.getGender()=="f")
insert(bib,"baseinfo");
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
finally
{
try {
if(r!=null)
{
r.close();
r = null;
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
/**
* 插入微博
* @param bib
* @param table
*/
public void insertStatus(StatusBean bib)
{
String situation = " where weiboId="+ bib.getWeiboId();
ResultSet r = Query("status", situation);
try
{
if(r.next() == false)
insert(bib,"status");
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
finally
{
try {
if(r!=null)
{
r.close();
r = null;
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
/**
*
* @param bib 要插入的对象
* @param table 要插入的表
* @return 返回一条插入语句
*/
public String getInsertSql(Object bib, String table)
{
String sql = "insert into "+ table+ " values ( "; Field[] field = bib.getClass().getFields();
for(int i = 0 ; i < field.length; i++)
{
try {
// System.out.println(i + " " +field[i].get(bib));
if(i<field.length-1)
sql+= "\""+field[i].get(bib)+"\",";
else
sql+= " \""+ field[i].get(bib) + "\");";
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
}
}
return sql;
}
/**
* 取得现在总共有多少信息
* @return
*/
public int getTotal(String table)
{ String sql = "select count(*) from "+ table;
int ret = -1;
ResultSet r = null;
try
{
stmt.clearBatch();
r = stmt.executeQuery(sql);
if(r.next())
ret = r.getInt(1);
return ret;
}
catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
return -1;
}
}
}
/**
* 将抓下来的数据存入数据库,当前只支持mysql
* @author 北邮君君 [email protected] 2011-9-1
*/
import java.lang.reflect.Field;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import org.yuqing.bean.*;public class WeiboDb
{
private Connection connect = null;
Statement stmt = null;
public WeiboDb()
{
this.reginster();
this.conDB();
try
{
stmt = this.connect.createStatement();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* 加载mysql驱动
*/
public void reginster()
{
try {
Class.forName("com.mysql.jdbc.Driver"); //加载MYSQL JDBC驱动程序
// System.out.println("Success loading Mysql Driver!");
}
catch (Exception e) {
System.out.print("Error loading Mysql Driver!");
e.printStackTrace();
}
}
/**
* 连接数据库
* @return 连接对象
*/
public Connection conDB()
{
Connection connect = null;
try {
connect = DriverManager.getConnection(
"jdbc:mysql://localhost/weibo?useUnicode=true&characterEncoding=utf-8", "root", "123456");
//连接URL为 jdbc:mysql//服务器地址/数据库名
//后面的2个参数分别是登陆用户名和密码
System.out.println("Success connect Mysql server!");
}
catch (Exception e)
{
System.out.print("get data error!");
e.printStackTrace();
}
this.connect = connect;
return connect;
}
/**
* 向一个表中插入对象
* @param bib
* @param table
*/
public void insert(Object bib, String table)
{
String insertSql = getInsertSql(bib,table);
try {
stmt.clearBatch();
stmt.execute(insertSql);
}
catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
System.out.println(insertSql);
}
finally
{
/* try
{
if(stmt!=null)
stmt.close();
stmt = null;
}
catch(Exception e)
{e.printStackTrace();}*/
}
}
/**
*
* @param查询table里的信息 条件是situation
* @param table 要插入的表
* @return 结果ResultSet对象
*/
private ResultSet Query(String table,String situation)
{
//取得对象每一个成员变量的名字
//查询以条件为situation的结果
String sql = " select * from "+ table +" "+situation +";";
// System.out.println(sql); ResultSet r = null;
try {
stmt.clearBatch();
r = stmt.executeQuery(sql);
}
catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
/* try {
if(stmt!=null)
{
stmt.close();
stmt = null;
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}*/
} return r;
}
/**
* 插入用户数据
* @param bib
* @param table
*/
public void insertBaseinfo(BaseInfoBean bib)
{
String situation = " where id="+ bib.getId();
ResultSet r = Query("baseinfo", situation);
try
{
if(r.next() == false && bib.getGender()=="f")
insert(bib,"baseinfo");
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
finally
{
try {
if(r!=null)
{
r.close();
r = null;
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
/**
* 插入微博
* @param bib
* @param table
*/
public void insertStatus(StatusBean bib)
{
String situation = " where weiboId="+ bib.getWeiboId();
ResultSet r = Query("status", situation);
try
{
if(r.next() == false)
insert(bib,"status");
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
finally
{
try {
if(r!=null)
{
r.close();
r = null;
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
/**
*
* @param bib 要插入的对象
* @param table 要插入的表
* @return 返回一条插入语句
*/
public String getInsertSql(Object bib, String table)
{
String sql = "insert into "+ table+ " values ( "; Field[] field = bib.getClass().getFields();
for(int i = 0 ; i < field.length; i++)
{
try {
// System.out.println(i + " " +field[i].get(bib));
if(i<field.length-1)
sql+= "\""+field[i].get(bib)+"\",";
else
sql+= " \""+ field[i].get(bib) + "\");";
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
}
}
return sql;
}
/**
* 取得现在总共有多少信息
* @return
*/
public int getTotal(String table)
{ String sql = "select count(*) from "+ table;
int ret = -1;
ResultSet r = null;
try
{
stmt.clearBatch();
r = stmt.executeQuery(sql);
if(r.next())
ret = r.getInt(1);
return ret;
}
catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
return -1;
}
}
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货