From: Carlos G.A. <car...@ho...> - 2002-08-06 17:03:38
|
Hello: The IscDbc project have two files ( IscDbc.h, Types.h ) that deifine the same constants with different names ( like jdbcDATE and JDBC_DATE ), i made changes for using only the constants defined in IscDbc.h ( that have the correct values ): Types.h: Remove: enum JdbcType { jdbcNULL = 0, TINYINT = (-7), // byte / C char SMALLINT = 5, // short INTEGER = 4, BIGINT = (-5), // QUAD (64 bit) jdbcFLOAT = 6, jdbcDOUBLE = 8, jdbcCHAR = 1, VARCHAR = 12, LONGVARCHAR = (-1), jdbcDATE = 91, TIME = 92, TIMESTAMP = 93, TYPE_SQL_NUMERIC = 2, TYPE_SQL_DECIMAL = 3, TYPE_SQL_LONGVARBINARY = -4, TYPE_SQL_LONGVARCHAR = -1, TYPE_SQL_DATE = 9, TYPE_SQL_TIME = 10, TYPE_SQL_TIMESTAMP = 11, jdbcBLOB = 2004, jdbcCLOB = 2005, CLOB = 2005, }; TypesResultSet.cpp: Changes static const Types types [] = { ALPHA ("CHAR", jdbcCHAR,32767), ALPHA ("VARCHAR", VARCHAR,32765), NUMERIC ("NUMERIC", TYPE_SQL_NUMERIC, 18, "precision,scale", 0, 18), NUMERIC ("DECIMAL", TYPE_SQL_DECIMAL, 18, "precision,scale", 0, 18), NUMERIC ("SMALLINT", SMALLINT, 5, NULL, 0, 0), NUMERIC ("INTEGER", INTEGER, 10, NULL, 0, 0), NUMERIC ("FLOAT", jdbcFLOAT, 15, NULL, 0, 0), NUMERIC ("DOUBLE PRECISION", jdbcDOUBLE, 15, NULL, 0, 0), BLOB ("LONG VARCHAR", TYPE_SQL_LONGVARCHAR,"'","'"), BLOB ("LONG VARBINARY", TYPE_SQL_LONGVARBINARY,NULL,NULL), DATETIME("DATE",jdbcDATE,10,"{d'","'}"), DATETIME("TIME",TIME,8,"{t'","'}"), DATETIME("TIMESTAMP",TIMESTAMP,23,"{ts'","'}"), }; to: static const Types types [] = { NUMERIC ("NUMERIC", JDBC_NUMERIC, MAX_NUMERIC_LENGTH, "precision,scale", 0, MAX_NUMERIC_LENGTH), NUMERIC ("DECIMAL", JDBC_DECIMAL, MAX_DECIMAL_LENGTH, "precision,scale", 0, MAX_DECIMAL_LENGTH), NUMERIC ("SMALLINT", JDBC_SMALLINT, MAX_SMALLINT_LENGTH, NULL, 0, 0), NUMERIC ("INTEGER", JDBC_INTEGER, MAX_INT_LENGTH, NULL, 0, 0), NUMERIC ("FLOAT", JDBC_FLOAT, MAX_FLOAT_LENGTH, NULL, 0, 0), NUMERIC ("DOUBLE PRECISION", JDBC_DOUBLE, MAX_DOUBLE_LENGTH, NULL, 0, 0), DATETIME("DATE",JDBC_DATE,MAX_DATE_LENGTH,"{d'","'}"), DATETIME("TIME",JDBC_TIME,MAX_TIME_LENGTH,"{t'","'}"), DATETIME("TIMESTAMP",JDBC_TIMESTAMP,MAX_TIMESTAMP_LENGTH,"{ts'","'}"), ALPHA ("CHAR", JDBC_CHAR,MAX_CHAR_LENGTH), ALPHA ("VARCHAR", JDBC_VARCHAR,MAX_VARCHAR_LENGTH), BLOB ("BLOB SUB_TYPE 1", JDBC_LONGVARCHAR,"'","'"), BLOB ("BLOB", JDBC_LONGVARBINARY,NULL,NULL), }; And changes: static const Fields fields [] = { FIELD ("TYPE_NAME", VARCHAR, 128), FIELD ("DATA_TYPE", SMALLINT, 5), FIELD ("PRECISION", INTEGER, 10), FIELD ("LITERAL_PREFIX", VARCHAR, 128), FIELD ("LITERAL_SUFFIX", VARCHAR, 128), FIELD ("CREATE_PARAMS", VARCHAR, 128), FIELD ("NULLABLE", SMALLINT, 5), FIELD ("CASE_SENSITIVE", SMALLINT, 5), FIELD ("SEARCHABLE", SMALLINT, 5), FIELD ("UNSIGNED_ATTRIBUTE", SMALLINT, 5), FIELD ("MONEY", SMALLINT, 5), FIELD ("AUTO_INCREMENT", SMALLINT, 5), FIELD ("LOCAL_TYPE_NAME", VARCHAR, 128), FIELD ("MINIMUM_SCALE", SMALLINT, 5), FIELD ("MAXIMUM_SCALE", SMALLINT, 5), FIELD ("SQL_DATA_TYPE", SMALLINT, 5), FIELD ("SQL_DATETIME_SUB", SMALLINT, 5), FIELD ("NUM_PREC_RADIX", INTEGER, 10), FIELD ("SQL_INTERVAL_PRECISION", SMALLINT, 5), }; to: static const Fields fields [] = { FIELD ("TYPE_NAME" , JDBC_VARCHAR , 128), FIELD ("DATA_TYPE" , JDBC_SMALLINT , 5), FIELD ("PRECISION" , JDBC_INTEGER , 10), FIELD ("LITERAL_PREFIX" , JDBC_VARCHAR , 128), FIELD ("LITERAL_SUFFIX" , JDBC_VARCHAR , 128), FIELD ("CREATE_PARAMS" , JDBC_VARCHAR , 128), FIELD ("NULLABLE" , JDBC_SMALLINT , 5), FIELD ("CASE_SENSITIVE" , JDBC_SMALLINT , 5), FIELD ("SEARCHABLE" , JDBC_SMALLINT , 5), FIELD ("UNSIGNED_ATTRIBUTE" , JDBC_SMALLINT , 5), FIELD ("MONEY" , JDBC_SMALLINT , 5), FIELD ("AUTO_INCREMENT" , JDBC_SMALLINT , 5), FIELD ("LOCAL_TYPE_NAME" , JDBC_VARCHAR , 128), FIELD ("MINIMUM_SCALE" , JDBC_SMALLINT , 5), FIELD ("MAXIMUM_SCALE" , JDBC_SMALLINT , 5), FIELD ("SQL_DATA_TYPE" , JDBC_SMALLINT , 5), FIELD ("SQL_DATETIME_SUB" , JDBC_SMALLINT , 5), FIELD ("NUM_PREC_RADIX" , JDBC_INTEGER , 10), FIELD ("SQL_INTERVAL_PRECISION", JDBC_SMALLINT, 5), }; Sqlda.cpp: Changes: int Sqlda::getSqlType(int iscType, int subType, int sqlScale) { switch (iscType & ~1) { case SQL_TEXT: return JDBC_CHAR; case SQL_VARYING: return JDBC_VARCHAR; case SQL_SHORT: if ( sqlScale < 0 ) return JDBC_DECIMAL; return JDBC_SMALLINT; case SQL_LONG: if ( sqlScale < 0 ) return JDBC_DECIMAL; return JDBC_INTEGER; case SQL_INT64: if ( sqlScale < 0 ) return JDBC_DECIMAL; return JDBC_BIGINT; case SQL_QUAD: return JDBC_BIGINT; case SQL_FLOAT: return JDBC_REAL; case SQL_DOUBLE: if ( sqlScale < 0 ) return JDBC_DECIMAL; return JDBC_DOUBLE; case SQL_TIMESTAMP: return JDBC_TIMESTAMP; case SQL_TYPE_TIME: return TIME; case SQL_TYPE_DATE: return jdbcDATE; case SQL_BLOB: if (subType == 1) return JDBC_LONGVARCHAR; return JDBC_LONGVARBINARY; case SQL_ARRAY: NOT_SUPPORTED("array", 0, "", 0, ""); } return 0; } to: int Sqlda::getSqlType(int iscType, int subType, int sqlScale) { switch (iscType & ~1) { case SQL_TEXT: return JDBC_CHAR; case SQL_VARYING: return JDBC_VARCHAR; case SQL_SHORT: if ( sqlScale < 0 ) return JDBC_DECIMAL; return JDBC_SMALLINT; case SQL_LONG: if ( sqlScale < 0 ) return JDBC_DECIMAL; return JDBC_INTEGER; case SQL_FLOAT: return JDBC_FLOAT; // return JDBC_REAL; case SQL_DOUBLE: if ( sqlScale < 0 ) return JDBC_DECIMAL; return JDBC_DOUBLE; case SQL_QUAD: return JDBC_BIGINT; case SQL_INT64: if ( sqlScale < 0 ) return JDBC_DECIMAL; return JDBC_BIGINT; case SQL_BLOB: if (subType == 1) return JDBC_LONGVARCHAR; return JDBC_LONGVARBINARY; case SQL_TIMESTAMP: return JDBC_TIMESTAMP; case SQL_TYPE_TIME: return JDBC_TIME; case SQL_TYPE_DATE: return JDBC_DATE; case SQL_ARRAY: NOT_SUPPORTED("array", 0, "", 0, ""); } return 0; } Best regards Carlos Guzmán Álvarez Vigo-España _________________________________________________________________ MSN. Más Útil cada Día. http://www.msn.es/intmap/ |