JAVA通用数据库访问工具类
import java.sql.*;/** * 数据库操作通用类 * 包括对等数据库的操作 */public class CommonDB { private ConnectionsqlCon; private ResultSetrstSql; private StatementstmS; private String strCon; private String driveName; private booleanstatus; private long rowcount; /*** 设置连接驱动名称,EG:* @param drivename 驱动名称* <p> sun.jdbc.odbc.JdbcOdbcDriver </p>* <p>com.microsoft.jdbc.sqlserver.SQLServerDriver </p>* <p> oracle.jdbc.driver.OracleDriver </p>* <p> com.ibm.db2.jdbc.app.DB2Driver </p>* <p>com.informix.jdbc.IfxDriver </p>* <p> com.sybase.jdbc.SybDriver </p>* <p>org.postgresql.Driver </p>* <p> com.mysql.Driver </p>*/ public void setDriveName(String drivename) {this.driveName = drivename; } /*** 设置连接源名称,EG:* @param conname 数据库连接字符串* <p> jdbc:odbc:bbs 或 jdbc:odbc:Driver={MicroSoft Access Driver (*.mdb)};DBQ=c:/smdb.mdb</p>* <p>jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=smdb</p>* <p> jdbc:oracle:thin:@localhost:1521:smdb </p>* <p> jdbc:db2://localhost:5000/smdb </p>* <p>jdbc:informix-sqli://127.0.0.1:1533/smdb:INFORMIXSERVER=myserver;user=test;password=test </p>* <p> jdbc:sybase:Tds:localhost:5007/smdb </p>* <p>jdbc:postgresql://localhost/smdb </p>* <p> jdbc:mysql://127.0.0.1/smdb </p>*/ public void setConnectName(String conname) {this.strCon = conname; } /*** 连接数据库* @param username 帐号* @param password 密码* @return boolean status连接状态*/ public boolean connect(String username, String password) {try { Class.forName(this.driveName).newInstance(); this.sqlCon = java.sql.DriverManager.getConnection(this.strCon, username, password); this.status = true; return true;} catch (Exception e) { this.status = false; return false;} } /*** 执行一条SQL语句,execute sql(insert,update,delete,...)* @param s SQL语句* @return*/ public boolean execute(String s) {try { this.stmS = this.sqlCon.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE); this.stmS.executeUpdate(s); this.status = true; return true;} catch (Exception e) { this.status = false; return false;} } /*** 执行一条SQL查询语句* @param s SQL查询语句* @return*/ public boolean query(String s) {try { this.rowcount = 0; this.stmS = this.sqlCon.createStatement(); this.rstSql = this.stmS.executeQuery(s); while (this.nextrecord()) { this.rowcount++; } this.rstSql = this.stmS.executeQuery(s); this.status = true; return true;} catch (Exception e) { this.status = false; return false;} } /*** 返回查询到的记录数* @return*/ public long getrowcount() {return this.rowcount; } /*** 得到某个字段的值* @param s 字段名称* @return*/ public String getstring(String s) {try { return this.rstSql.getString(s);} catch (Exception ex) { return "字段不存在!";} } /*** 得到某个字段的值* @param s 字段名称* @return*/ public int getint(String s) {try { return Integer.parseInt(this.rstSql.getString(s));} catch (Exception e) { return 0;} } /*** 记录指针向下移一条* @return*/ public boolean nextrecord() {try { return this.rstSql.next();} catch (Exception e) { return false;} } /*** 从数据库取出数据后进行汉字字符编码* @param s 要编码的串* @return*/ public String readChinese(String s) {try { String temp = new String(s.getBytes("GB2312"), "ISO8859_1"); return temp;} catch (Exception e) { return s;} } /*** 得到数据库操作的状态* @return*/ public boolean getstatus() {return this.status; } /*** 关闭所有数据库操作对象* @return*/ public boolean close() {try { if (this.sqlCon != null) this.sqlCon.close(); if (this.rstSql != null) this.rstSql.close(); if (this.stmS != null) this.stmS.close(); this.status = true; return false;} catch (Exception e) { this.status = false; return true;} } /*** 返回结果集* @return*/ public ResultSet getResultLists() {return this.rstSql; } public static void main(String[] agrs) throws SQLException {CommonDB commonsql = new CommonDB();commonsql.setDriveName("sun.jdbc.odbc.JdbcOdbcDriver");commonsql.setConnectName("jdbc:odbc:bbs");if (commonsql.connect("", "")) { System.out.print("connect seccessed!"); if (commonsql.query("select * from userinfo")) { System.out.println(commonsql.getrowcount()); while (commonsql.nextrecord()) { System.out.println(commonsql.getstring("username")); System.out.println(commonsql.getint("age")); } } commonsql.close();} else { System.err.println("connect failed!");} }}
页:
[1]