package com.joe.utilities.core.jdbc.jdbc;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.Collection;
public class OperationCoreImpl implements IOperationCore {
protected Connection aConnection = null;
protected Statement aStatement = null;
protected ResultSet aResultSet = null;
protected ResultSetMetaData rsmd = null;
protected static OperationCoreImpl m_instance = null;
public static OperationCoreImpl createFactory() throws Exception {
if(m_instance==null)
m_instance=new OperationCoreImpl();
return m_instance;
}
public OperationCoreImpl() throws Exception {
init();
}
private void init() throws Exception{
aConnection=ConnectionFactory.getConnection();
}
public void dispose() {
try {
if(aResultSet!=null)
aResultSet.close();
} catch (SQLException e) {
e.printStackTrace();
}
try {
if(aStatement!=null)
aStatement.close();
} catch (SQLException e) {
e.printStackTrace();
}
try {
if(aConnection!=null)
aConnection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
public ResultSet executeQuery(String queryString) {
try {
aStatement = aConnection.createStatement();
aResultSet = aStatement.executeQuery(queryString);
} catch (SQLException e) {
aResultSet=null;
e.printStackTrace();
}
return aResultSet;
}
public int executeUpdate(String updateString) {
int effectedRows=0;
try{
aConnection.setAutoCommit(false);
aStatement = aConnection.createStatement();
effectedRows = aStatement.executeUpdate(updateString);
aConnection.commit();
}catch(SQLException ex){
System.out.println("��ݿ�д����ʧ��!");
if(aConnection!=null)
{
try {
aConnection.rollback();
System.out.println("JDBC����ع�ɹ�");
} catch (SQLException e) {
System.out.println("JDBC����ع�ʧ��");
e.printStackTrace();
}
}
}
return effectedRows;
}
public Collection<String> getColumnNames(String queryString) {
ArrayList<String> ColumnNames=new ArrayList<String>();
try {
aResultSet=executeQuery(queryString);
ResultSetMetaData rsmd=aResultSet.getMetaData();
int j=rsmd.getColumnCount();
for(int k=0;k<j;k++){
ColumnNames.add(rsmd.getColumnName(k+1));
}
} catch (SQLException e) {
ColumnNames=null;
e.printStackTrace();
}
return ColumnNames;
}
public Collection<String> getColumnTypeNames(String queryString) {
ArrayList<String> ColumnNames=new ArrayList<String>();
try {
aResultSet=executeQuery(queryString);
ResultSetMetaData rsmd=aResultSet.getMetaData();
int j=rsmd.getColumnCount();
for(int k=0;k<j;k++){
ColumnNames.add(rsmd.getColumnTypeName(k+1));
}
} catch (SQLException e) {
ColumnNames=null;
e.printStackTrace();
}
return ColumnNames;
}
public String getColumnName(int columIndex, String queryString) {
String columnName=null;
try {
aResultSet=executeQuery(queryString);
rsmd=aResultSet.getMetaData();
columnName=rsmd.getColumnName(columIndex + 1);
} catch (SQLException e) {
e.printStackTrace();
}
return columnName;
}
public int getColumnCount(String queryString) {
int columnCount=0;
try {
aResultSet=executeQuery(queryString);
ResultSetMetaData rsmd=aResultSet.getMetaData();
columnCount = rsmd.getColumnCount();
} catch (SQLException e) {
e.printStackTrace();
}
return columnCount;
}
public int getRowCount(String queryString) {
int rowCount=0;
try {
aResultSet=executeQuery(queryString);
while(aResultSet.next())
rowCount=aResultSet.getInt(1);
} catch (SQLException e) {
e.printStackTrace();
}
return rowCount;
}
public Object getValueAt(int rowIndex, int columnIndex, String queryString) {
Object values=null;
try {
aResultSet=executeQuery(queryString);
aResultSet.absolute(rowIndex + 1);
values=aResultSet.getObject(columnIndex + 1);
} catch (SQLException e) {
e.printStackTrace();
}
return values;
}
}