package org.dayatang.db;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
public class JDBCConnection implements DBConnection{
private static DBConnection dbConn;
private Connection conn;
private Statement stemt;
public static DBConnection getJDBCConnection() throws Exception {
if(dbConn == null){
dbConn = new JDBCConnection();
}
return dbConn;
}
private JDBCConnection() throws Exception {
this.conn = DriverManager.getConnection(PropertiesUtil.JDBC_URL, PropertiesUtil.JDBC_USERNAME, PropertiesUtil.JDBC_PASSWD);
this.stemt = conn.createStatement();
}
public boolean execute(String sql) throws Exception {
return stemt.execute(sql);
}
public ResultSet query(String sql) throws Exception {
return stemt.executeQuery(sql);
}
public ResultSet queryRelations(String tableName) throws Exception {
return conn.getMetaData().getImportedKeys(null, null, tableName);
}
/**
* 查询所有的表和视图, 返回ResultSet
*/
public ResultSet queryTables() throws Exception {
return conn.getMetaData().getTables(null,null,null,new String[] { "TABLE", "VIEW" });
}
/**
* 返回数据库中所有的表和视图的名字集合
*
* @return
* @throws Exception
*/
public List<String> getTableNames() throws Exception {
List<String> result = new ArrayList<String>();
ResultSet rs = queryTables();
while (rs.next()) {
String tableName = rs.getString(3);
result.add(tableName);
}
return result;
}
}