📄 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 + -