jdbc连接数据库(转)
package org.craf;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.Statement;import java.util.ArrayList;import java.util.HashMap;import java.util.Map;public class FilterData {private Connection dbConnection = null; private Statement selectPro = null; //用于 select 操作 private Statement updatePro = null; //用于 update 操作 private ResultSet dbResultSet = null; //操作 select 结果集 private String driverName;//声明MySql驱动类 private String dbHost; private String dbPort; private String dbName; private String dbUserName; private String dbPassword; private String enCoding; /** *//** * 实例化DbConnection对象 * @param host 数据库主机(IP) * @param port 数据库端口 * @param dName 数据库名称 * @param uName 用户名 * @param password 用户密码 */ public FilterData(String host, String port, String dName, String uName, String password) { driverName = "com.sybase.jdbc3.jdbc.SybDriver"; dbHost = host; dbPort = port; dbName = dName; dbUserName = uName; dbPassword = password; enCoding = "?Charset"; }//end DbConnection() /** *//** * 连接数据库 * @return 连接成功返回true,连接失败返回false */ public boolean dbConnection() { StringBuilder urlTem = new StringBuilder(); urlTem.append("jdbc:sybase:Tds:"); urlTem.append(dbHost); urlTem.append(":"); urlTem.append(dbPort); urlTem.append("/"); urlTem.append(dbName); urlTem.append(enCoding); String url = urlTem.toString(); try { Class.forName(driverName).newInstance(); dbConnection = DriverManager.getConnection(url, dbUserName, dbPassword); return true; }catch(Exception e){ System.err.println("数据库联接失败!"); System.out.println("url = " + url); e.printStackTrace(); //得到详细的出错消息 return false; } }// end dbConnection() /** *//** * 执行专门的select操作,注意:在selectSql中的字段和fields中的个数、名称要保持一致 * @param selectSql 用于执行的select语句 * @param fields 要选择的字段 * @return 含有Map的ArrayList,一条记录形成一个Map */ public ArrayList dbSelect(String selectSql, ArrayList fields) { ArrayList<Map> selectResult = new ArrayList<Map>(); Map<String, String> recordInfo; try{ selectPro = dbConnection.createStatement();//定义Statement对象 dbResultSet = selectPro.executeQuery(selectSql); while(dbResultSet.next()){ recordInfo = new HashMap<String, String>(); for(int i = 0; i<fields.size(); ++i) recordInfo.put((String)fields.get(i), dbResultSet.getString((String)fields.get(i))); selectResult.add(recordInfo); } dbResultSet.close(); //断开结果集 selectPro.close(); //断开Statement对象 }catch(Exception e){ System.out.println("选择操作失败"); System.out.println("Sql = " + selectSql); e.printStackTrace(); } return selectResult; }//end dbSelect() /** *//** * 对数据库执行update,delete或insert操作 * @param sql 要执行操作的SQL语句 * @return 执行成功返回true,失败返回false */ public boolean dbUpdate(String sql) { try { updatePro = dbConnection.createStatement(); //定义Statement对象 updatePro.executeUpdate(sql); updatePro.close();// -------------关闭Statement对象 return true; }catch(Exception err){ System.out.println("数据库操作失败!"); System.out.println("Sql = " + sql); err.printStackTrace(); return false; } }//end dbUpdate() /** *//** * 关闭数据库连接 * @return 成功返回true, 失败返回false */ public boolean closeDatabase() { try{ if(dbConnection != null) dbConnection.close(); return true; }catch (Exception ex){ ex.printStackTrace(); return false; } }//end closeDatabase() public String filterData(String area){ String areas[] = area.split("-"); String resultData = ""; if(areas.length == 3){ resultData = areas+"-"+areas; }else{ resultData = area; } return resultData; } public static void main(String[] args) { String dbHost = "192.168.0.57"; String dbPort = "5000"; String dbName = "ssjg"; String dbUserName = "sa"; String dbPassword = "123456"; String tableName = "BASEDATA_50000011"; String tableid = "BASEDATAID"; String areaname = "JCDQNAME"; FilterData conn = new FilterData(dbHost, dbPort, dbName, dbUserName, dbPassword); boolean bool = conn.dbConnection(); if(!bool) return; String selectSql = "select "+tableid+","+areaname+" from "+tableName+" order by JCDID"; ArrayList<String> fieldsList = new ArrayList<String>(); fieldsList.add(tableid); fieldsList.add(areaname); ArrayList<Map> userInfoList = conn.dbSelect(selectSql, fieldsList); int infoSize = userInfoList.size(); String userName; String ad; if(infoSize == 0) System.out.println("没有选出符合条件的数据"); else{ for(int i = 0; i < infoSize; ++i){ userName = (String)userInfoList.get(i).get(areaname); ad = (String)(((Map)userInfoList.get(i)).get(tableid)); String areaData = conn.filterData(userName); String updateSql = "update "+tableName+" set "+areaname+" = '" + areaData + "' where "+tableid+" ="+new Integer(ad)+""; conn.dbUpdate(updateSql); System.out.println(areaname + " = " + areaData+";"+tableid+" = " + ad); } System.out.println("记录总数:"+infoSize); } conn.closeDatabase(); }//end main() }
页:
[1]