📄 picodbapi.java
字号:
/*_____ _ _ Corso Italia, 178(_|__ . (_ |_|_ 56125 Pisa(_|_) |)|(()_)()| | tel. +39 050 46380 | | picosoft@picosoft.it Copyright (C) Picosoft s.r.l. 1995-2002 This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.*/package IT.picosoft.jdbc;import java.io.PrintStream;import java.io.UnsupportedEncodingException;import java.math.BigDecimal;import java.sql.*;import java.net.*;import java.util.Vector;import java.util.Calendar;import org.omg.CORBA.*;public class PicoDbApi { public static final short SQL_NTS = -3;/* public static final int MajorVersion = 1; public static final int MinorVersion = 0;*/ private static final String id = JDBCPicoDbHelper.id(); private static final String key = "key"; //private static ORB orb = ORB.init(new String[0], null); private ORB orb; private int hEnv = OdbcDef.SQL_NULL_HENV; private JDBCPicoDb getCORBAServer(String host, int port) { return JDBCPicoDbHelper.narrow((org.omg.CORBA.Object)orb.string_to_object((new IOR(id, host, port, key)).toString())); } public static String getLocalHost() { String hostName = null; try {hostName = InetAddress.getLocalHost().getHostName();} catch (Exception e) {} return hostName; } public String charSet; private JDBCPicoDb server; private IntHolder returnCodeHolder = new IntHolder(); private String sqlState = ""; private String sqlErrMess = ""; public PicoDbApi() { if (DriverManager.getLogWriter() != null) { java.util.Date date = new java.util.Date(); DriverManager.println ("Jdbc PicoDb thin client"); DriverManager.println ("Current Date/Time: " + date.toString()); DriverManager.println ("Loading PicoDbApi library"); DriverManager.println ("orb = " + orb); } orb = ORB.init(new String[0], null); } public void finalize () { } public int SQLAllocEnv() throws SQLException { if(DriverManager.getLogWriter() != null) DriverManager.println("(SQLAllocEnv)"); return 1; } public int SQLAllocConnect(int i) throws SQLException { if(DriverManager.getLogWriter() != null) DriverManager.println("(SQLAllocConnect)"); return 1; } public int SQLAllocStmt(OdbcConnection HDBC) throws SQLException { int hDbc = HDBC.getHDBC(); if(DriverManager.getLogWriter() != null) DriverManager.println("!--(SQLAllocStmt), hDbc=" + hDbc); IntHolder hStmtHolder = new IntHolder(); server.SQLAllocStmt(returnCodeHolder, hDbc, hStmtHolder); if (returnCodeHolder.value != OdbcDef.SQL_SUCCESS) standardError (returnCodeHolder.value, 0, hDbc, 0); if(DriverManager.getLogWriter() != null) DriverManager.println("hStmt=" + hStmtHolder.value); return hStmtHolder.value; } public void SQLFreeEnv(int hEnv) throws SQLException { if(DriverManager.getLogWriter() != null) DriverManager.println("(SQLFreeEnv), hEnv=" + hEnv); } public void SQLFreeConnect(OdbcConnection HDBC) throws SQLException { int hDbc; hDbc = HDBC != null ? HDBC.getHDBC() : 0; if(DriverManager.getLogWriter() != null) DriverManager.println("(SQLFreeConnect), hDbc=" + hDbc); try { server.SQLFreeConnect(returnCodeHolder, hDbc); } catch (org.omg.CORBA.SystemException e) { // vfc jdk1.4 } if (returnCodeHolder.value != OdbcDef.SQL_SUCCESS) standardError (returnCodeHolder.value, 0, hDbc, 0); } public void SQLFreeStmt(OdbcStatement HSTMT, short fOption) throws SQLException { int hStmt = HSTMT.getHSTMT(); if(DriverManager.getLogWriter() != null) DriverManager.println("!--(SQLFreeStmt), hStmt=" + hStmt + ", fOption=" + fOption); server.SQLFreeStmt(returnCodeHolder, hStmt, fOption); if (returnCodeHolder.value != OdbcDef.SQL_SUCCESS) standardError (returnCodeHolder.value, 0, 0, hStmt); } public void SQLDisconnect(OdbcConnection HDBC) throws SQLException { int hDbc = HDBC.getHDBC(); if(DriverManager.getLogWriter() != null) DriverManager.println("(SQLDisconnect), hDbc=" + hDbc); server.SQLDisconnect(returnCodeHolder, hDbc); if (returnCodeHolder.value != OdbcDef.SQL_SUCCESS) standardError (returnCodeHolder.value, 0, hDbc, 0); } public int SQLConnect(String connStr, String user, String pass) throws SQLException, SQLWarning { String host = getLocalHost(); String port = "9876"; String dsn = "default"; IntHolder hDbcHolder = new IntHolder(); IntHolder hEnvHolder = new IntHolder(); if(DriverManager.getLogWriter() != null) DriverManager.println("(SQLConnect), this=" + this + " thread = " + Thread.currentThread()); int j, i = connStr.indexOf(':'); if (i >= 0) { host = connStr.substring(0, i); j = connStr.indexOf(':', i + 1); if (j >= 0) { port = connStr.substring(i + 1, j); dsn = connStr.substring(j + 1); } else { port = connStr.substring(i); } } else { host = connStr; } if (host.charAt(0) == '@') host = host.substring(1); if(DriverManager.getLogWriter() != null) DriverManager.println("Debug " + host + " " + port); server = getCORBAServer(host, Integer.parseInt(port)); if(DriverManager.getLogWriter() != null) DriverManager.println("Debug " + server + "," + hEnv); if (hEnv == OdbcDef.SQL_NULL_HENV) { server.SQLAllocEnv(returnCodeHolder, hEnvHolder); if (returnCodeHolder.value == OdbcDef.SQL_ERROR) { standardError (returnCodeHolder.value, 0, 0, 0); } hEnv = hEnvHolder.value; } server.SQLAllocConnect(returnCodeHolder, hEnv, hDbcHolder); if(DriverManager.getLogWriter() != null) DriverManager.println("Debug " + hEnv + "," + hDbcHolder); if (returnCodeHolder.value == OdbcDef.SQL_ERROR) { standardError (returnCodeHolder.value, 0, hDbcHolder.value, 0); } else { if(DriverManager.getLogWriter() != null) DriverManager.println("(SQLAlloc), hDbc=" + hDbcHolder.value + ",rc=" + returnCodeHolder.value); if (returnCodeHolder.value != OdbcDef.SQL_SUCCESS) standardError (returnCodeHolder.value, 0, 0, 0); if(DriverManager.getLogWriter() != null) DriverManager.println("(SQLConnect), hDbc=" + hDbcHolder.value + ", dsn=" + dsn + ", user=" + user + ", pass=" + pass + ", host=" + host + ", port=" + port); server.SQLConnect( returnCodeHolder, hDbcHolder.value, dsn, SQL_NTS, user, SQL_NTS, pass, SQL_NTS ); if (returnCodeHolder.value != OdbcDef.SQL_SUCCESS) { standardError (returnCodeHolder.value, 0, hDbcHolder.value, 0); } } return hDbcHolder.value; } public void SQLCancel(OdbcStatement HSTMT) throws SQLException, SQLWarning { int hStmt = HSTMT.getHSTMT(); if(DriverManager.getLogWriter() != null) DriverManager.println("(SQLCancel), hStmt=" + hStmt); server.SQLCancel(returnCodeHolder, hStmt); if (returnCodeHolder.value != OdbcDef.SQL_SUCCESS) standardError (returnCodeHolder.value, 0, 0, hStmt); } public int SQLColAttributes(OdbcStatement HSTMT, int icol, short type) throws SQLException, PicoSQLWarning { int hStmt = HSTMT.getHSTMT(); if(DriverManager.getLogWriter() != null) DriverManager.println("(SQLColAttributes int), hStmt=" + hStmt + ", icol=" + icol + ", type=" + type); OctetSequenceHolder rgbDesc = new OctetSequenceHolder(new byte[2]); ShortHolder pcbDesc = new ShortHolder(); IntHolder pfDesc = new IntHolder(); short cbDescMax = 2; server.SQLColAttributes(returnCodeHolder,hStmt,(short)icol,type,rgbDesc, cbDescMax, pcbDesc, pfDesc); if (returnCodeHolder.value != OdbcDef.SQL_SUCCESS) standardError (returnCodeHolder.value, 0, 0, hStmt); if(DriverManager.getLogWriter() != null) DriverManager.println("value (int)=" + pfDesc.value); return pfDesc.value; } public String SQLColAttributesString(OdbcStatement HSTMT, int icol, short type) throws SQLException, PicoSQLWarning { int hStmt = HSTMT.getHSTMT(); if(DriverManager.getLogWriter() != null) DriverManager.println("(SQLColAttributes String), hStmt=" + hStmt + ", icol=" + icol + ", type=" + type); OctetSequenceHolder rgbDesc = new OctetSequenceHolder(new byte[128]); ShortHolder pcbDesc = new ShortHolder(); IntHolder pfDesc = new IntHolder(); short cbDescMax = 128; server.SQLColAttributes(returnCodeHolder,hStmt,(short)icol,type,rgbDesc, cbDescMax, pcbDesc, pfDesc); String Return = new String(); try { Return = PicoUtil.BytesToChars(charSet, rgbDesc.value); } catch(UnsupportedEncodingException unsupportedencodingexception) { if(DriverManager.getLogWriter() != null) DriverManager.println(unsupportedencodingexception.toString()); } if(DriverManager.getLogWriter() != null) DriverManager.println("value (String)=" + Return.trim()); return Return.trim(); } public void SQLColumns(OdbcStatement HSTMT, String catalog, String schema, String table, String colType) throws SQLException, SQLWarning { int hStmt = HSTMT.getHSTMT(); if(DriverManager.getLogWriter() != null) { DriverManager.println("(SQLColumns), hStmt=" + hStmt + ", catalog=" + catalog + ", schema=" + schema + ", table=" + table + ", colType=" + colType); } server.SQLColumns( returnCodeHolder, hStmt, catalog == null ? "" : catalog, catalog == null ? OdbcDef.SQL_NULL_DATA : SQL_NTS, schema == null ? "" : schema, schema == null ? OdbcDef.SQL_NULL_DATA : SQL_NTS, table == null ? "%" : table, table == null ? OdbcDef.SQL_NULL_DATA : SQL_NTS, colType == null ? "" : colType, colType == null ? OdbcDef.SQL_NULL_DATA : SQL_NTS
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -