?? ejbconnection.java
字號:
package mytools.sqlclient;
import mytools.sqlbean.*;
import mytools.util.*;
import com.borland.dx.dataset.*;
import java.util.*;
import javax.naming.*;
public class EjbConnection
implements IConnection
{
Sql sql = null; //ejb遠程接口對象
public static final String SQL_SVR_JNDI_NAME = "Sql"; //sql服務器jndi名稱
public static final String MYTOOLS_HOST = Config.getParmValue("mytools.host"); //sql服務器主機名
public static final String MYTOOLS_PORT = Config.getParmValue("mytools.port"); //sql服務器端口號
public static final String MYTOOLS_DS_JDNI_NAME = Config.getParmValue("db.jndi.name"); //sql服務器數據源jndi名
public EjbConnection(Sql po_sql)
{
sql = po_sql;
}
public EjbConnection()
{
sql = createNewConnection(MYTOOLS_HOST, MYTOOLS_DS_JDNI_NAME);
}
/**
功能:連接到sql服務器
@param ps_host 主機名或主機地址
@param ps_datasource_name weblogic數據源名稱
@return 成功 Sql遠程對象引用 失敗 null
*/
private synchronized Sql createNewConnection(String ps_host, String ps_datasource_name)
{
Sql io_sql;
try
{
Context lo_ctx = getInitialContext(ps_host);
//查找sql服務的bean
SqlHome lo_sqlhome = (SqlHome) lo_ctx.lookup(SQL_SVR_JNDI_NAME);
io_sql = lo_sqlhome.create(ps_datasource_name);
}
catch (Exception ex)
{
Util.logError("connectToSqlServer error:" + ex);
return null;
}
return io_sql;
}
/**
功能:取得中間件服務器上下文信息
@param ps_host 主機名或主機地址
@return 成功 上下文信息 失敗 引出Exception
*/
private Context getInitialContext(String ps_host) throws Exception
{
String ls_url;
String ls_user = null;
String ls_password = null;
Properties lo_properties = null;
ls_url = "t3://" + ps_host + ":" + MYTOOLS_PORT;
try
{
lo_properties = new Properties();
lo_properties.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory");
lo_properties.put(Context.PROVIDER_URL, ls_url);
if (ls_user != null)
{
lo_properties.put(Context.SECURITY_PRINCIPAL, ls_user);
lo_properties.put(Context.SECURITY_CREDENTIALS, ls_password == null ? "" : ls_password);
}
return new InitialContext(lo_properties);
}
catch (Exception ex)
{
throw ex;
}
}
/**
功能:執行sql語句
@param ps_sql sql語句
@return 成功 查詢結果 失敗 null
*/
public ExecInfo execSql(String ps_sql)
{
boolean lb_isSelectSql = false;
if (sql == null)
{
Util.logError("execSql:尚未連接數據庫!");
return null;
}
try
{
lb_isSelectSql = Util.isSelectSql(ps_sql);
ExecInfo lo_ret = sql.execSql(ps_sql);
if (lo_ret.getSqlCode() != 0)
{
return null;
}
if (lb_isSelectSql)
{
//產生查詢數據集
if (!lo_ret.generateDataSet())
{
return null;
}
}
return lo_ret;
}
catch (Exception ex)
{
Util.logError("execSql:執行語句:" + ps_sql + "失敗:" + ex);
return null;
}
}
/**
功能:取得查詢結果數據集數據
@param 無
@return 成功 查詢結果 失敗 null
*/
public DataSetData getDataSetData(String ps_sql)
{
ExecInfo lo_ret=null;
try
{
lo_ret = sql.getDataSetData(ps_sql);
if (lo_ret == null)
{
Util.logError("getDataSetData:執行語句:" + ps_sql + "失敗");
return null;
}
if (lo_ret.getSqlCode() != 0)
{
Util.logError("getDataSetData:執行語句:" + ps_sql + "失敗");
return null;
}
return lo_ret.getDataSetData();
}
catch (Exception ex)
{
Util.error("getDataSetData:" + ex);
return null;
}
finally
{
if (lo_ret != null)
{
lo_ret.close();
}
}
}
/**
功能:取得查詢結果數據集數據
@param pi_page 頁號
@param pi_pageRec 每頁記錄數
@param ps_sql sql語句
@return 成功 查詢結果 失敗 null
*/
public DataSetData getDataSetData(int pi_page, int pi_pageRec, String ps_sql)
{
ExecInfo lo_ret = null;
try
{
if (sql == null)
{
Util.logError("getDataSetData:連接數據庫失敗!");
return null;
}
lo_ret = sql.getDataSetData(pi_page, pi_pageRec, ps_sql);
if (lo_ret.getSqlCode() != 0)
{
return null;
}
return lo_ret.getDataSetData();
}
catch (Exception ex)
{
Util.logError("getDataSetData:執行語句:" + ps_sql + "失敗:" + ex);
return null;
}
finally
{
if (lo_ret != null)
{
lo_ret.close();
}
}
}
/**
功能:保存數據窗口變動的數據
@param ps_sql 查詢sql語句
@param po_changes 變動的數據集數據
@return 可能產生錯誤的數據集
*/
public DataSetData saveDataChanges(String ps_sql, DataSetData po_changes) throws
DataSetException
{
try
{
if (sql == null)
{
Util.logError("saveDataChanges:尚未連接數據庫!");
throw new DataSetException("saveDataChanges:尚未連接數據庫!");
}
return sql.saveDataChanges(ps_sql, po_changes);
}
catch (Exception ex)
{
throw new DataSetException(ex.toString());
}
}
/**
功能:提交數據
@param 無
@return 1 成功 0 失敗
*/
public int commit()
{
int li_ok = 0;
try
{
if (sql == null)
{
Util.logError("commit:尚未連接數據庫!");
return 0;
}
li_ok = sql.commit();
return li_ok;
}
catch (Exception ex)
{
Util.logError("commit:" + ex.toString());
return 0;
}
}
/**
功能:回滾事務,同時關閉數據庫連接
@param 無
@return 1 成功 0 失敗
*/
public int rollback()
{
try
{
if (sql == null)
{
Util.logError("rollback:尚未連接數據庫!");
return 0;
}
return sql.rollback();
}
catch (Exception ex)
{
Util.logError("rollback:" + ex.toString());
return 0;
}
}
//關閉數據庫連接
public void close()
{
try
{
sql.remove();
}
catch (Exception ex)
{
Util.error("close:" + ex);
}
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -