|
英特內軟體股份有限公司 |
||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||
java.lang.Object | +--jcx.db.talk
此類別talk,為存取DB Server元件,在使用前先請確認已安裝jdbc相關driver.
目前支援資料庫含
使用方法:在目前目錄下(通常是JC目錄),建立talk.cfg 檔案,內容如下: uid=myid (帳號) pwd=mypassword (密碼) port=5000 (DB port) max_connections=10 (Connection pool的最大對DB連接數) type=sybase (DB Server 類型,可使用參數有:sybase,oracle,db2,mssql,mysql,cloudscape,informix) sid=SMS (default database,SID) history=100 (記錄的 SQL history數量)
------------------------------------------------------------------------
以下這份文件是用來記錄程式設計時,牽涉到SQL的相關問題.
[select的傳回資料判斷及使用]
example:
1.sql="select XXX,YYY,ZZZ from XYZ where XXX='xxx' and YYY='yyy' and ZZZ='zzz'";
2.String ret[][]=talk.sendmsgx("selectx",sql);
3.if(ret.length==0)
4.{
5. no data;
6.}
7.else
8.{
9. if(check.check_db(ret).equals(""))
10. {
11. show data;
12. }
13. else
14. {
15. show sql error message,ex:invaild column name...;
16. }
17.}
explain:
select指令執行後,傳回之資訊判斷方式一般是這樣的一個形式,
範例第3至6行是表示此次select找不到符合條件之資料,
第7至17行則是有傳回資訊的情況,
但有可能是SQL錯誤訊息,而不是我們想要的資料,
因此第9至12行的判斷是當這些資訊的內容不是SQL的錯誤訊息,
check_db(ret)傳回空字串,
我們可以繼續處理所得到的資料,例如將之show在畫面上,
然而當check_db(ret)傳回非空字串之內容時,就表示select有問題,
第13至16行是對此錯誤訊息作一個處理.
[iud(insert,update,delete)的傳回資料判斷及使用]
example:
1.sql="delete from XYZ where XXX='xxx' and YYY='yyy' and ZZZ='zzz'";//以delete的動作為例
2.String ret=talk.sendmsg("exec",sql);
3.if(check.check_db(ret).equals(""))
4.{
5. IUD complete successfully;
6.}
7.else
8.{
9. IUD fail;
10. show sql error message,ex:SQL command not properly ended;
11.}
explain:
UID時傳回的資訊正常時為其所影響之資料筆數,
否則就是SQL錯誤訊息,第3至6行是指令正確執行完畢的情形.
所以check.check_db(ret)傳回空字串,
我們就可以告知使用者,動作成功的訊息,
而第7至11行則是有SQL錯誤訊息產生的情形,
所以必須告知使用者,這個動作失敗,
有必要的話,可以附上SQL錯誤訊息的內容或其他事項.
------------------------------------------------------------------------
以下這份文件是用來處理對資料庫的Transaction問題.
資料庫的Transaction處理必須慎重處理,若有不慎,極易導致lock.
請仔細閱讀以下範例
(建議採用int[] sendmsg("exec",String[]);)
explain:
// create a new connection to db with talk.cfg (自己獨佔,所以用完後儘快釋放掉)
talk t=new talk();
try{
int ret1=t.execute("insert into a values(1,'first row')");
int ret2=t.execute("update b set ID='jony'");
if(ret2==0){ // 沒有update到資料
t.rollback();
} else {
// 資料皆正常異動
t.commit();
}
} catch(SQLException e){ t.rollback(); }
t.close();
| Field Summary | |
int |
callback_step
|
| Constructor Summary | |
talk()
取得DB的Transaction通道,SQL指令全部結束後,一定要立即呼叫close(). |
|
talk(java.lang.String db_type,
java.lang.String ip,
java.lang.String uid,
java.lang.String pwd,
java.lang.String sid)
產生對DB的connection pool,與talk.cfg無關. |
|
talk(java.lang.String db_type,
java.lang.String ip,
java.lang.String uid,
java.lang.String pwd,
java.lang.String sid,
int max_connections)
/** 產生對DB的connection pool,與talk.cfg無關. |
|
talk(java.lang.String db_type,
java.lang.String ip,
java.lang.String uid,
java.lang.String pwd,
java.lang.String sid,
int max_connections,
int timeout)
產生對DB的connection pool,與talk.cfg無關. |
|
talk(java.lang.String db_type,
java.lang.String ip,
java.lang.String uid,
java.lang.String pwd,
java.lang.String sid,
java.lang.String db_enc,
java.lang.String ap_enc)
產生對DB的connection pool,與talk.cfg無關. |
|
| Method Summary | |
void |
backup(java.lang.String path)
備份SQL的資料. |
void |
begin()
begin Transaction. |
static java.util.Vector |
call(java.lang.String sp,
java.util.Vector v)
執行SQL Store Procedure. |
static java.util.Vector |
call(java.lang.String sp,
java.util.Vector v,
java.lang.String cfgfile)
執行SQL Store Procedure. |
java.util.Vector |
callFromPool(java.lang.String sp,
java.util.Vector v)
執行SQL Store Procedure. |
java.util.Vector |
callFunctionFromPool(java.lang.String sp,
java.util.Vector v)
執行SQLfunction. |
void |
close()
結束資料庫連線. |
static void |
closeALL()
結束對DB的Transaction. |
void |
commit()
commit Transaction. |
java.lang.String |
execFromPool(java.lang.String sql)
執行SQL異動指令. |
int[] |
execFromPool(java.lang.String[] sql)
在同一個Transaction範圍內執行SQL異動指令. |
int[] |
execFromPool(java.lang.String[] sql,
java.lang.Object[][] parameter)
執行SQL異動指令,使用prepareStatement. |
java.lang.String |
execFromPool(java.lang.String sql,
java.lang.Object[] parameter)
執行SQL異動指令,使用prepareStatement. |
int |
execute(java.lang.String sql)
在Transaction範圍內執行SQL指令. |
int |
exportFromPool(java.lang.String s,
java.lang.String filename,
boolean include_scheme,
java.lang.String where)
匯出SQL的資料. |
java.lang.String[] |
getCatalogsFromPool()
查詢資料庫的Schemas. |
static java.lang.String[][] |
getColumns(java.lang.String sql)
查詢table的欄位資料. ret[i][0]: column name ret[i][1]: column type ret[i][2]: column type name ret[i][3]: column prec ret[i][4]: column scale ret[i][5]: column length |
static java.lang.String[][] |
getColumns(java.lang.String sql,
java.lang.String cfgfile)
查詢 table 的欄位資料. |
java.lang.String[][] |
getColumnsFromPool(java.lang.String sql)
|
java.sql.Connection |
getConnectionFromPool()
取得java.sql.connection物件(只適用於server端程式). |
static java.util.Vector |
getHistory()
查詢執行過的SQL指令. |
static java.lang.String |
getInfo()
查詢connection pool status. |
java.lang.String[] |
getObjectsFromPool(java.lang.String pattern,
java.lang.String type)
查詢資料庫的物件. |
java.lang.String[][] |
getSqlTypes()
查詢table的欄位資料. |
static java.lang.String[] |
getTables(java.lang.String pattern)
查詢資料庫的table. |
static java.lang.String[] |
getTables(java.lang.String pattern,
java.lang.String cfgfile)
查詢資料庫的table. |
java.lang.String[] |
getTablesFromPool(java.lang.String pattern)
查詢資料庫的table. |
static talk |
getTalk(java.lang.String filename,
java.lang.String name)
取得專案設定的talk. |
int |
getTimeout()
取得talk的timeout(ms). |
int |
importFromPool(java.lang.String s,
java.lang.String filename,
boolean recreate_table)
匯入SQL的資料. |
boolean |
isUnicodeEncoding()
判斷目前的talk object的字串是否為UNICODE編碼. |
java.lang.String[][] |
query(java.lang.String sql)
在Transaction範圍內執行SQL查詢指令. |
java.lang.String[][] |
queryFromPool(java.lang.String sql)
執行SQL查詢指令. |
java.lang.String[][] |
queryFromPool(java.lang.String sql,
int start,
int rows)
執行SQL查詢指令(區間,僅適用於DMaker). |
java.lang.String[][] |
queryFromPool(java.lang.String sql,
long timeout)
執行SQL 查詢指令(有cache功能). |
java.lang.String[][] |
queryFromPool(java.lang.String sql,
long timeout,
java.lang.String TAG)
執行SQL查詢指令(有cache功能). |
java.lang.String[][] |
queryFromPool(java.lang.String sql,
java.lang.Object[] parameter)
執行SQL查詢指令(preparestatement). |
java.lang.String[][] |
queryFromPool(java.lang.String sql,
java.lang.Object[] parameter,
boolean with_cache)
|
java.lang.String[][] |
queryFromPool(java.lang.String sql,
java.lang.Object[] parameter,
long timeout)
執行SQL 查詢指令(有cache功能). |
java.lang.String[][] |
queryFromPool(java.lang.String sql,
java.lang.Object[] parameter,
long timeout,
java.lang.String TAG)
執行SQL查詢指令(有cache功能). |
java.util.Hashtable |
queryHashtable(java.lang.String sql,
int index)
執行 SQL 查詢指令(執行結果會依照指定的KEY放在Hashtable). |
void |
restore(java.lang.String path)
還原 SQL 的資料. |
void |
rollback()
rollback Transaction. |
void |
run()
|
void |
scheme(java.lang.String path)
比對 SQL 的scheme資料. |
static java.lang.String |
sendmsg(java.lang.String s1,
java.lang.String s2)
執行SQL指令. |
static int[] |
sendmsg(java.lang.String s1,
java.lang.String[] update_sqls)
執行transaction的SQL指令. |
static java.lang.String |
sendmsg(java.lang.String s1,
java.lang.String s2,
java.lang.Object[] parameter)
|
static java.lang.String |
sendmsg(java.lang.String s1,
java.lang.String s2,
java.lang.Object[] parameter,
java.lang.String cfgfile)
執行SQL指令(preparestatement). |
static java.lang.String |
sendmsg(java.lang.String s1,
java.lang.String s2,
java.lang.String cfgfile)
執行SQL指令. |
static java.lang.String[][] |
sendmsgx(java.lang.String[] guardium,
java.lang.String s1,
java.lang.String s2,
java.lang.String cfgfile)
執行SQL指令(guardium). |
static java.lang.String[][] |
sendmsgx(java.lang.String s1,
java.lang.String s2)
執行SQL指令. |
static java.lang.String[][] |
sendmsgx(java.lang.String s1,
java.lang.String s2,
java.lang.Object[] parameter)
|
static java.lang.String[][] |
sendmsgx(java.lang.String s1,
java.lang.String s2,
java.lang.Object[] parameter,
java.lang.String cfgfile)
執行SQL指令,use Preparestatement. |
static java.lang.String[][] |
sendmsgx(java.lang.String s1,
java.lang.String s2,
java.lang.String cfgfile)
執行SQL指令. |
static java.lang.String[][] |
sendmsgx(java.lang.String s1,
java.lang.String s2,
java.lang.String cfgfile,
int timeout)
執行SQL指令. |
void |
setSQLTimeout(int timeout)
|
void |
setTimeout(int timeout)
設定talk的timeout(ms),預設值為 60000(60秒). |
static int |
transfer(java.lang.String sql1,
java.lang.String sql2,
java.lang.String type1,
java.lang.String ip1,
java.lang.String port1,
java.lang.String id1,
java.lang.String pwd1,
java.lang.String sid1,
java.lang.String type2,
java.lang.String ip2,
java.lang.String port2,
java.lang.String id2,
java.lang.String pwd2,
java.lang.String sid2)
轉換異質資料庫資料. |
static int |
transfer(java.lang.String sql1,
java.lang.String sql2,
java.lang.String type1,
java.lang.String ip1,
java.lang.String port1,
java.lang.String id1,
java.lang.String pwd1,
java.lang.String sid1,
java.lang.String type2,
java.lang.String ip2,
java.lang.String port2,
java.lang.String id2,
java.lang.String pwd2,
java.lang.String sid2,
java.lang.String source_enc,
java.lang.String dest_enc)
轉換異質資料庫資料. |
| Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Field Detail |
public int callback_step
| Constructor Detail |
public talk(java.lang.String db_type,
java.lang.String ip,
java.lang.String uid,
java.lang.String pwd,
java.lang.String sid)
因此指令也不使用sendmsg,改採
db_type - 資料庫種類(mssql,oracle,sybase...).ip - 資料庫位址.uid - 帳號.pwd - 密碼.sid - 預設資料庫.SQLException,ClassNotFoundException -
public talk(java.lang.String db_type,
java.lang.String ip,
java.lang.String uid,
java.lang.String pwd,
java.lang.String sid,
java.lang.String db_enc,
java.lang.String ap_enc)
因此指令也不使用sendmsg,改採
db_type - 資料庫種類(mssql,oracle,sybase...).ip - 資料庫位址.uid - 帳號.pwd - 密碼.sid - 預設資料庫.db_enc. - ap_enc. - SQLException,ClassNotFoundException -
public talk(java.lang.String db_type,
java.lang.String ip,
java.lang.String uid,
java.lang.String pwd,
java.lang.String sid,
int max_connections)
因此指令也不使用sendmsg,改採
db_type - 資料庫種類(mssql,oracle,sybase...).ip - 資料庫位址.uid - 帳號.pwd - 密碼.sid - 預設資料庫.max_connections - connection Pool的大小.SQLException,ClassNotFoundException -
public talk(java.lang.String db_type,
java.lang.String ip,
java.lang.String uid,
java.lang.String pwd,
java.lang.String sid,
int max_connections,
int timeout)
因此指令也不使用sendmsg,改採
db_type - 資料庫種類(mssql,oracle,sybase...).ip - 資料庫位址.uid - 帳號.pwd - 密碼.sid - 預設資料庫.max_connections - connection Pool的大小.timeout - 設定閒置的connection過多久會自動與資料庫離線,單位是千分之一秒.SQLException,ClassNotFoundException -
public talk()
throws java.sql.SQLException,
java.lang.ClassNotFoundException
SQLException,ClassNotFoundException. - | Method Detail |
public static talk getTalk(java.lang.String filename,
java.lang.String name)
filename - 專案名稱.name - 資料庫連接設定名稱.public void run()
run in interface java.lang.Runnablepublic boolean isUnicodeEncoding()
public static int transfer(java.lang.String sql1,
java.lang.String sql2,
java.lang.String type1,
java.lang.String ip1,
java.lang.String port1,
java.lang.String id1,
java.lang.String pwd1,
java.lang.String sid1,
java.lang.String type2,
java.lang.String ip2,
java.lang.String port2,
java.lang.String id2,
java.lang.String pwd2,
java.lang.String sid2)
throws java.lang.Exception
適合將source table的資料轉至其它資料庫.
若為異質資料庫,可能需指定編碼.
sql1 - source的SQL指令.sql2 - 目標資料庫的Table Name.type1 - 來源資料庫的種類.ip1 - 來源資料庫的位址.port1 - 來源資料庫的port.id1 - 來源資料庫的帳號.pwd1 - 來源資料庫的密碼.sid1 - 來源資料庫的DB Name.type2 - 目標資料庫的種類.ip2 - 目標資料庫的位址.port2 - 目標資料庫的port.id2 - 目標資料庫的帳號.pwd2 - 目標資料庫的密碼.sid2 - 目標資料庫的DB Name.java.lang.Exception - if SQL error or other Exception
public static int transfer(java.lang.String sql1,
java.lang.String sql2,
java.lang.String type1,
java.lang.String ip1,
java.lang.String port1,
java.lang.String id1,
java.lang.String pwd1,
java.lang.String sid1,
java.lang.String type2,
java.lang.String ip2,
java.lang.String port2,
java.lang.String id2,
java.lang.String pwd2,
java.lang.String sid2,
java.lang.String source_enc,
java.lang.String dest_enc)
throws java.lang.Exception
適合將source table的資料轉至其它資料庫.
編碼原則,如果兩個資料庫的編碼相同,就無需指定,否則請參考下列資料.
編碼有可能隨作業系統、JDBC版本而變動,以下僅供參考.
sql1 - source 的SQL指令.sql2 - 目標資料庫的Table Name.type1 - 來源資料庫的種類.ip1 - 來源資料庫的位址.port1 - 來源資料庫的port.id1 - 來源資料庫的帳號.pwd1 - 來源資料庫的密碼.sid1 - 來源資料庫的DB Name.type2 - 目標資料庫的種類.ip2 - 目標資料庫的位址.port2 - 目標資料庫的port.id2 - 目標資料庫的帳號.pwd2 - 目標資料庫的密碼.sid2 - 目標資料庫的DB Name.source_enc - 來源資料庫的JDBC編碼.dest_enc - 目標資料庫的JDBC編碼.java.lang.Exception - if SQL error or other Exception.public static java.lang.String getInfo()
public static java.util.Vector getHistory()
Vector 執行過的SQL指令. Vector的每個元素的物件為String s[]=new String[4]; s[0]=SQL 指令; s[1]=執行結果; s[2]=執行起始時間; s[3]=DB response Time (ms);
public int[] execFromPool(java.lang.String[] sql)
throws java.sql.SQLException,
java.lang.Exception
發生錯誤時會產生 Excepion,否則會回傳數字陣列.
使用方法 :
talk t=getTalk("xxx.dat","name1");
String ret=t.execFromPool(sql);
sql - SQL指令.java.lang.Exception - if SQL error or other Exception.
public java.lang.String execFromPool(java.lang.String sql,
java.lang.Object[] parameter)
throws java.sql.SQLException,
java.lang.Exception
使用方法:
talk t=getTalk("xxx.dat","name1");
String ret=t.execFromPool(sql,new Object[]{"a","b","c"});
sql - SQL指令.parameter. - java.lang.Exception - if SQL error or other Exception.
public int[] execFromPool(java.lang.String[] sql,
java.lang.Object[][] parameter)
throws java.sql.SQLException,
java.lang.Exception
使用方法:
talk t=getTalk("xxx.dat","name1");
String ret=t.execFromPool(sql[],new Object[][]{{"a","b","c"}});
sql - SQL指令(一維字串陣列).parameter - (二維Object陣列).java.lang.Exception - if SQL error or other Exception.
public java.lang.String execFromPool(java.lang.String sql)
throws java.sql.SQLException,
java.lang.Exception
使用方法:
talk t=getTalk("xxx.dat","name1");
String ret=t.execFromPool(sql);
sql - SQL指令.java.lang.Exception - if SQL error or other Exception.
public java.util.Hashtable queryHashtable(java.lang.String sql,
int index)
throws java.lang.Exception
使用SQL指令查詢過資料,執行結果會依照指定的KEY放在Hashtable,未來可以直接用key get,可傳回String[][].
SQL 指令最後一定要order by key.
使用方法:
talk t=getTalk("xxx.dat","name1");
String sql="select EMPID,SALNO,AMOUNT from SALARY order by EMPID";
Hashtable h=t.queryHashtable(sql,0);
String ret[][]=(String[][])h.get(EMPID);
if(ret==null) ret=new String[0][0];
sql - SQL指令.index - 放在Hashtable的key index.java.lang.Exception - if SQL error or other Exception.
public java.lang.String[][] queryFromPool(java.lang.String sql,
long timeout)
throws java.sql.SQLException,
java.lang.Exception
如果相同的SQL指令已經查詢過資料,在尚未Timeout之前會使用剛剛的資料,以加快速度.
使用方法:
talk t=getTalk("xxx.dat","name1");
String ret[][]=t.queryFromPool(sql,3600);
sql - SQL指令.timeout - 以秒計算.java.lang.Exception - if SQL error or other Exception.
public java.lang.String[][] queryFromPool(java.lang.String sql,
java.lang.Object[] parameter,
long timeout)
throws java.sql.SQLException,
java.lang.Exception
如果相同的SQL指令已經查詢過資料,在尚未Timeout之前會使用剛剛的資料,以加快速度.
使用方法:
talk t=getTalk("xxx.dat","name1");
String ret[][]=t.queryFromPool("select * from table1 where a=? and b like ? and c!=?",new Object[]{param1,param2,new Integer(param3)},3600);
sql - SQL指令.parameter. - timeout - 以秒計算.java.lang.Exception - if SQL error or other Exception.
public java.lang.String[][] queryFromPool(java.lang.String sql,
long timeout,
java.lang.String TAG)
throws java.sql.SQLException,
java.lang.Exception
如果相同的SQL指令已經查詢過資料,在尚未Timeout之前會使用剛剛的資料,以加快速度.
清除cache,請使用clear(String TAG);
使用方法:
talk t=getTalk("xxx.dat","name1");
String ret=t.queryFromPool(sql,3600,"HRUSER");
sql - SQL指令.timeout - 以秒計算.TAG - CACHE區名稱(建議使用sql內使用的Table Name,如兩個Table以上,以逗號隔開).java.lang.Exception - if SQL error or other Exception.
public java.lang.String[][] queryFromPool(java.lang.String sql,
java.lang.Object[] parameter,
long timeout,
java.lang.String TAG)
throws java.sql.SQLException,
java.lang.Exception
如果相同的SQL指令已經查詢過資料,在尚未Timeout之前會使用剛剛的資料,以加快速度.
清除cache,請使用clear(String TAG);
使用方法:
talk t=getTalk("xxx.dat","name1");
String ret[][]=t.queryFromPool("select * from table1 where a=? and b like ? and c!=?",new Object[]{param1,param2,new Integer(param3)},3600,"HRUSER");
sql - SQL指令.parameter. - timeout - 以秒計算.TAG - CACHE區名稱(建議使用sql內使用的Table Name,如兩個Table以上,以逗號隔開).java.lang.Exception - if SQL error or other Exception.
public java.lang.String[][] queryFromPool(java.lang.String sql,
int start,
int rows)
throws java.sql.SQLException,
java.lang.Exception
使用方法:
talk t=getTalk("xxx.dat","name1");
String ret=t.execFromPool(sql,0,100);
sql - SQL指令.start - 起點(第一筆請傳入0).rows - 筆數.java.lang.Exception - if SQL error or other Exception.
public java.lang.String[][] queryFromPool(java.lang.String sql)
throws java.sql.SQLException,
java.lang.Exception
使用方法:
talk t=getTalk("xxx.dat","name1");
String ret=t.execFromPool(sql);
sql - SQL指令.java.lang.Exception - if SQL error or other Exception.
public java.lang.String[][] queryFromPool(java.lang.String sql,
java.lang.Object[] parameter)
throws java.sql.SQLException,
java.lang.Exception
使用方法:
talk t=getTalk("xxx.dat","name1");
String ret[][]=t.queryFromPool("select * from table1 where a=? and b like ? and c!=?",new Object[]{param1,param2,new Integer(param3)});
sql - SQL指令.parameter. - java.lang.Exception - if SQL error or other Exception.
public java.lang.String[][] queryFromPool(java.lang.String sql,
java.lang.Object[] parameter,
boolean with_cache)
throws java.sql.SQLException,
java.lang.Exception
public void backup(java.lang.String path)
throws java.lang.Exception
使用方法:
talk t=getTalk("xxx.dat","name1");
String ret=t.exportFromPool(tablename,filename);
path. - java.lang.Exception - if SQL error or other Exception.
public int exportFromPool(java.lang.String s,
java.lang.String filename,
boolean include_scheme,
java.lang.String where)
throws java.sql.SQLException,
java.lang.Exception
使用方法:
talk t=getTalk("xxx.dat","name1");
String ret=t.exportFromPool(tablename,filename);
s - tablename.filename. - include_scheme. - where. - java.lang.Exception - if SQL error or other Exception.
public int importFromPool(java.lang.String s,
java.lang.String filename,
boolean recreate_table)
throws java.sql.SQLException,
java.lang.Exception
使用方法:
talk t=getTalk("xxx.dat","name1");
String ret=t.exportFromPool(tablename,filename);
s - tablename.filename. - recreate_table. - java.lang.Exception - if SQL error or other Exception.
public java.util.Vector callFromPool(java.lang.String sp,
java.util.Vector v)
throws java.sql.SQLException,
java.lang.Exception
使用方法:
talk t=getTalk("xxx.dat","name1");
Vector v=new Vector();
v.addElement("[varchar]"); // 第一個參數,out 型態
v.addElement(new Integer(1)); // 第一個input參數,in 型態
v.addElement("parameter2"); // 第二個input參數,in 型態
Vector ret=t.callFromPool("sp",v);
String out_param1=(String)ret.elementAt(0);
sp - store procedure 名稱.v - store procedure 參數,out parameter使用[varchar]或[int].java.lang.Exception - if SQL error or other Exception.
public java.util.Vector callFunctionFromPool(java.lang.String sp,
java.util.Vector v)
throws java.sql.SQLException,
java.lang.Exception
使用方法:
talk t=getTalk("xxx.dat","name1");
Vector v=new Vector();
v.addElement("[varchar]"); // 第一個參數,out 型態
v.addElement(new Integer(1)); // 第一個input參數,in 型態
v.addElement("parameter2"); // 第二個input參數,in 型態
Vector ret=t.callFunctionFromPool("sp",v);
String out_param1=(String)ret.elementAt(0);
sp - store function 名稱.v - store function 參數,out parameter使用[varchar]或[int].java.lang.Exception - if SQL error or other Exception.
public java.sql.Connection getConnectionFromPool()
throws java.sql.SQLException,
java.lang.ClassNotFoundException
使用方法:
talk t=getTalk("xxx.dat","name1");
Connection con=t.getConnectionFromPool();
java.lang.Exception - if SQL error or other Exception.
public java.lang.String[] getCatalogsFromPool()
throws java.sql.SQLException,
java.lang.ClassNotFoundException
使用方法:
talk t=getTalk("xxx.dat","name1");
String tables[]=t.getSchemasFromPool();
java.lang.Exception - if SQL error or other Exception.
public java.lang.String[] getTablesFromPool(java.lang.String pattern)
throws java.sql.SQLException,
java.lang.ClassNotFoundException
使用方法:
talk t=getTalk("xxx.dat","name1");
String tables[]=t.getTablesFromPool("");
pattern - tablename,空白表示全部table.java.lang.Exception - if SQL error or other Exception.
public java.lang.String[] getObjectsFromPool(java.lang.String pattern,
java.lang.String type)
throws java.sql.SQLException,
java.lang.ClassNotFoundException
使用方法:
talk t=getTalk("xxx.dat","name1");
String views[]=t.getObjectsFromPool("","view");
pattern - tablename,空白表示全部table.type - 物件種類.java.lang.Exception - if SQL error or other Exception.
public java.lang.String[][] getColumnsFromPool(java.lang.String sql)
throws java.sql.SQLException,
java.lang.ClassNotFoundException
public java.lang.String[][] getSqlTypes()
throws java.sql.SQLException,
java.lang.ClassNotFoundException
使用方法:
talk t=getTalk("xxx.dat","name1");
String ret[][]=t.getColumnsFromPool("my_table");
ret[i][0]: column name
ret[i][1]: column type
ret[i][2]: column type name
ret[i][3]: column prec
ret[i][4]: column scale
ret[i][5]: column length
java.lang.Exception - if SQL error or other Exception.
public static void closeALL()
throws java.sql.SQLException
會先執行commit,然後再結束資料庫連線.
如果是Emaker的getTalk(),千萬不要直接呼叫close,可能會破壞其他使用者的DB session.
java.sql.SQLException - if SQL error or TimeOut
public void close()
throws java.sql.SQLException
如果是Emaker的getTalk(),千萬不要直接呼叫close,可能會破壞其他使用者的DB session.
java.sql.SQLException - if SQL error or TimeOut
public int execute(java.lang.String sql)
throws java.lang.Exception
當整批指令執行完後,須依情況執行commit()或rollback(),以免鎖住資料庫.
sql - SQL指令.java.sql.SQLException - if SQL error or TimeOut.
public java.lang.String[][] query(java.lang.String sql)
throws java.lang.Exception
sql - 查詢指令.java.sql.SQLException - if SQL error or TimeOut.
public void commit()
throws java.sql.SQLException
java.sql.SQLException - if SQL error or TimeOut.public void setSQLTimeout(int timeout)
public void setTimeout(int timeout)
timeout後,connection會自動rollback,並且close對DB的連線,
且所有method皆會發生SQLException: Talk Transaction Timeout!
timeout. - public int getTimeout()
public void begin()
throws java.sql.SQLException,
java.lang.ClassNotFoundException
java.sql.SQLException - if SQL error.
public void rollback()
throws java.sql.SQLException
自上一次commit後的SQL指令全部不算.
java.sql.SQLException - if SQL error.
public static java.util.Vector call(java.lang.String sp,
java.util.Vector v)
throws java.sql.SQLException,
java.lang.Exception
使用方法:
Vector v=new Vector();
v.addElement(new Integer(1)); // 第一個參數,in 型態
v.addElement("parameter2"); // 第二個參數,in 型態
v.addElement("[varchar]"); // 第三個參數,out型態
v.addElement("[int]"); // 第四個參數,out型態
String ret=talk.call("sp1",v);
String out_param1=(String)v.elementAt(2);
Integer out_param2=(Integer)v.elementAt(3);
sp - store procedure 名稱.v - store procedure 參數,out parameter使用[varchar]或[int].java.lang.Exception - if SQL error or other Exception.
public static java.util.Vector call(java.lang.String sp,
java.util.Vector v,
java.lang.String cfgfile)
throws java.sql.SQLException,
java.lang.Exception
使用方法:
Vector v=new Vector();
v.addElement(new Integer(1)); // 第一個參數,in 型態
v.addElement("parameter2"); // 第二個參數,in 型態
v.addElement("[varchar]"); // 第三個參數,out型態
v.addElement("[int]"); // 第四個參數,out型態
String ret=talk.call("sp1",v);
String out_param1=(String)v.elementAt(2);
Integer out_param2=(Integer)v.elementAt(3);
sp - store procedure 名稱.v - store procedure 參數,out parameter使用[varchar]或[int].cfgfile - cfg檔案名稱.java.lang.Exception - if SQL error or other Exception.
public static java.lang.String sendmsg(java.lang.String s1,
java.lang.String s2)
s1 - 傳入select或exec, 傳入select表示執行查詢指令; 傳入 exec 表示執行資料庫異動指令(insert,update,delete).
s2 - SQL指令.
public static java.lang.String sendmsg(java.lang.String s1,
java.lang.String s2,
java.lang.String cfgfile)
s1 - 傳入select或exec, 傳入select表示執行查詢指令; 傳入 exec 表示執行資料庫異動指令(insert,update,delete).
s2 - SQL指令.cfgfile - 使用自定的config file,格式參照 talk.cfg.
public static java.lang.String sendmsg(java.lang.String s1,
java.lang.String s2,
java.lang.Object[] parameter)
public static java.lang.String sendmsg(java.lang.String s1,
java.lang.String s2,
java.lang.Object[] parameter,
java.lang.String cfgfile)
s1 - 傳入select或exec, 傳入select表示執行查詢指令; 傳入 exec 表示執行資料庫異動指令(insert,update,delete).
s2 - SQL指令.parameter - SQL參數.cfgfile - 使用自定的config file,格式參照 talk.cfg.
public static java.lang.String[][] sendmsgx(java.lang.String s1,
java.lang.String s2)
s1 - 只可傳入select, 傳入select表示執行查詢指令. 傳入exec則回傳 String[0][0].
s2 - SQL指令.
public static java.lang.String[][] sendmsgx(java.lang.String s1,
java.lang.String s2,
java.lang.String cfgfile,
int timeout)
s1 - 只可傳入select, 傳入select表示執行查詢指令. 傳入exec則回傳 String[0][0].
s2 - SQL指令.cfgfile - 使用自定的config file,格式參照 talk.cfg.timeout - cache timeout,單位:秒.
public static java.lang.String[][] sendmsgx(java.lang.String s1,
java.lang.String s2,
java.lang.String cfgfile)
s1 - 只可傳入select, 傳入select表示執行查詢指令. 傳入exec則回傳 String[0][0].
s2 - SQL指令.cfgfile - 使用自定的config file,格式參照 talk.cfg.
public static java.lang.String[][] sendmsgx(java.lang.String s1,
java.lang.String s2,
java.lang.Object[] parameter)
public static java.lang.String[][] sendmsgx(java.lang.String s1,
java.lang.String s2,
java.lang.Object[] parameter,
java.lang.String cfgfile)
s1 - 只可傳入select, 傳入select表示執行查詢指令. 傳入exec則回傳 String[0][0].
s2 - SQL指令.parameter - SQL參數.cfgfile - 使用自定的config file,格式參照 talk.cfg.
public static java.lang.String[][] sendmsgx(java.lang.String[] guardium,
java.lang.String s1,
java.lang.String s2,
java.lang.String cfgfile)
guardium - 專用參數.s1 - 只可傳入select, 傳入select表示執行查詢指令. 傳入exec則回傳 String[0][0].
s2 - SQL指令.cfgfile - 使用自定的config file,格式參照 talk.cfg.
public static int[] sendmsg(java.lang.String s1,
java.lang.String[] update_sqls)
throws java.lang.Exception
s1 - 只可傳入exec, 傳入exec表示執行所有異動指令. 傳入 select 則回傳 int[0].
s2 - 異動SQL指令.
public static java.lang.String[] getTables(java.lang.String pattern)
throws java.lang.Exception
pattern - tablename,空白表示全部table.java.lang.Exception - if SQL error or other Exception.
public static java.lang.String[] getTables(java.lang.String pattern,
java.lang.String cfgfile)
throws java.lang.Exception
pattern - tablename,空白表示全部table.cfgfile,使用自定的config - file,格式參照talk.cfg.java.lang.Exception - if SQL error or other Exception.
public static java.lang.String[][] getColumns(java.lang.String sql)
throws java.io.IOException
tablename. - java.lang.Exception - if SQL error or other Exception.
public static java.lang.String[][] getColumns(java.lang.String sql,
java.lang.String cfgfile)
throws java.io.IOException
使用方法:
talk t=getTalk("xxx.dat","name1");
String ret[][]=t.getColumnsFromPool("my_table");
ret[i][0]: column name
ret[i][1]: column type
ret[i][2]: column type name
ret[i][3]: column prec
ret[i][4]: column scale
ret[i][5]: column length
tablename. - cfgfile,使用自定的 - config file ,格式參照 talk.cfg.java.lang.Exception - if SQL error or other Exception.
public void scheme(java.lang.String path)
throws java.lang.Exception
使用方法:
talk t=getTalk("xxx.dat","name1");
t.scheme(tablename,filename);
path - 或 jar 檔名.java.lang.Exception - if SQL error or other Exception.
public void restore(java.lang.String path)
throws java.lang.Exception
使用方法:
talk t=getTalk("xxx.dat","name1");
t.restore(tablename,filename);
path - 或 jar 檔名.java.lang.Exception - if SQL error or other Exception.
|
英特內軟體股份有限公司 |
||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||