|
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/
|