mbeckler <[EMAIL PROTECTED]> wrote: > DatabaseMetaData meta = conn.getMetaData(); > rs = meta.getColumns("test.db", null, "people", null); > > while (rs.next()) { > String columnName = rs.getString(4); > int sqlType = rs.getInt(5); > System.out.println("type of col " + columnName + " = " + > sqlType); > }
A simple solution is to switch to using getString("TYPE_NAME"), which returns whatever name you gave the type when you called CREATE TABLE. Supporting getInt("DATA_TYPE") is a little more complicated, as SQLite doesn't actually assign data types to columns. One option would be parsing the TYPE_NAME (see below), but I'm not too happy about this. I would prefer to measure the affine type of the column, but this can only be done by opening up a select statement on the table. Hmm. Perhaps I will offer a patch to SQLite to add the affine type to pragma table_info, that would make it easy. For more details on SQLite datatypes: http://sqlite.org/datatype3.html d. diff -rN -u old-sqlitejdbc/src/org/sqlite/MetaData.java new-sqlitejdbc/src/org/sqlite/MetaData.java --- old-sqlitejdbc/src/org/sqlite/MetaData.java 2008-04-05 11:02:24.000000000 +1100 +++ new-sqlitejdbc/src/org/sqlite/MetaData.java 2008-04-05 11:02:24.000000000 +1100 @@ -340,7 +340,7 @@ + "null as TABLE_SCHEM, " + "'" + escape(tbl) + "' as TABLE_NAME, " + "cn as COLUMN_NAME, " - + "-1 as DATA_TYPE, " + + "ct as DATA_TYPE, " + "tn as TYPE_NAME, " + "2000000000 as COLUMN_SIZE, " + "2000000000 as BUFFER_LENGTH, " @@ -372,14 +372,25 @@ String colNotNull = rs.getString(4); int colNullable = 2; - if (colType == null) colType = "TEXT"; if (colNotNull != null) colNullable = colNotNull.equals("0") ? 1:0; if (colFound) sql += " union all "; colFound = true; + colType = colType == null ? "TEXT" : colType.toUpperCase(); + int colJavaType = -1; + if (colType == "INT" || colType == "INTEGER") + colJavaType = Types.INTEGER; + else if (colType == "TEXT") + colJavaType = Types.VARCHAR; + else if (colType == "FLOAT") + colJavaType = Types.FLOAT; + else + colJavaType = Types.VARCHAR; + sql += "select " + i + " as ordpos, " + colNullable + " as colnullable, '" + + colJavaType + "' as ct, '" + escape(colName) + "' as cn, '" + escape(colType) + "' as tn"; --~--~---------~--~----~------------~-------~--~----~ Mailing List: http://groups.google.com/group/sqlitejdbc?hl=en To unsubscribe, send email to [EMAIL PROTECTED] -~----------~----~----~----~------~----~------~--~---