【备忘】mysql简单操作程序

     悲剧啊,发现原来写入数据库的数据有些问题,需要对这批数据进行处理

只有写几行代码连接到数据库批量修改了。

   需要操作的字段数据:

public class GarbageData {
	private long id;
	private String comment;
	
	public void setID(long id){
		this.id = id;
	}
	public long getID(){
		return this.id;
	}
	
	public void setComment(String comment){
		this.comment = comment;
	}
	public String getComment(){
		return this.comment;
	}
}

  修改代码:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import org.apache.log4j.Logger;

public class UpdateFeature {
	private Connection m_connection;
	private Statement m_statement;
	private ResultSet m_resultSet;
	private String m_strUrl;
	private String m_strDBUser;
	private String m_strDBPass;
	private static final Logger logger = Logger.getLogger(UpdateFeature.class);
	
	public UpdateFeature(String strUrl,String strDBUser,String strDBPass){
		this.m_strUrl = strUrl;
		this.m_strDBUser = strDBUser;
		this.m_strDBPass = strDBPass;
		this.connDB();
	}
	public int connDB(){
		try{
			Class.forName("org.gjt.mm.mysql.Driver");
			this.m_connection = DriverManager.getConnection(this.m_strUrl,this.m_strDBUser,this.m_strDBPass);
			this.m_statement = this.m_connection.createStatement(ResultSet.TYPE_FORWARD_ONLY,ResultSet.CONCUR_READ_ONLY);
			this.m_statement.setFetchSize(Integer.MIN_VALUE);
		}catch(ClassNotFoundException e){
			logger.error("Class not found exception.");
			logger.error(e.getMessage(),e);
			return -1;
		}catch(SQLException ex){
			logger.error("Connnect to " + this.m_strUrl + " failed!");
			logger.error(ex.getMessage(),ex);
		}
		return 0;
	}
	public Statement getStatement(){
		return this.m_statement;
	}
	public void updateFeature() throws SQLException{
		String getSql = "SELECT * FROM `generalantispam`.`GarbageFeature` where insertTime > " + "\"2012-12-15 00:00:00\" and insertTime < " + "\"2012-12-18 00:00:00\"" + " order by garbageid desc";
		logger.info(getSql);
		ResultSet rs = this.m_statement.executeQuery(getSql);
		List<GarbageData> dataList = new ArrayList<GarbageData>();
		while (rs.next()){
			GarbageData data = new GarbageData();
			long garbageID = rs.getLong("garbageID");
			String strComment = rs.getString("garbage");
			String[] comments = strComment.split(";;;");
			String strGarbage = comments[0];
			data.setID(garbageID);
			strGarbage = strGarbage.replaceAll("\"", "");
			data.setComment(strGarbage);
			dataList.add(data);
			logger.info(strComment);
		}
		logger.info("List size: " + dataList.size());
		this.m_connection.setAutoCommit(false);
		for(int i = 0; i < dataList.size(); i++){
			GarbageData data = dataList.get(i);
			String strSql = "update `generalantispam`.`GarbageFeature` set garbage=\"" + data.getComment() + "\" where garbageID =" + data.getID() ;
			logger.info(strSql);
			this.m_statement.executeUpdate(strSql);
			if (i % 50 == 0)
				this.m_connection.commit();
		}
		this.m_connection.commit();
	}
	public void close(){
		try {
			if (this.m_resultSet != null)
				m_resultSet.close();
			if (this.m_statement != null)
				m_statement.close();
			if (this.m_connection != null)
				m_connection.close();
		} catch (Exception e) {
			logger.equals(e.getMessage());
		}
	}
	public static void main(String[] args) {
		UpdateFeature upF = new UpdateFeature("jdbc:mysql://xxx.xxx.xxx.xxx:3306/generalantispam","garbage", "garbage");
		try {
			upF.updateFeature();
     upF.close(); } catch (SQLException e) { e.printStackTrace(); } } }
posted @ 2012-12-19 17:13  cstar(小乐)  阅读(291)  评论(0编辑  收藏  举报