| package SQLite.JDBC2z; |
| |
| import java.sql.*; |
| |
| public class JDBCResultSetMetaData implements java.sql.ResultSetMetaData { |
| |
| private JDBCResultSet r; |
| |
| public JDBCResultSetMetaData(JDBCResultSet r) { |
| this.r = r; |
| } |
| |
| public String getCatalogName(int column) throws java.sql.SQLException { |
| return null; |
| } |
| |
| public String getColumnClassName(int column) throws java.sql.SQLException { |
| column--; |
| if (r != null && r.tr != null) { |
| if (column < 0 || column >= r.tr.ncolumns) { |
| return null; |
| } |
| if (r.tr instanceof TableResultX) { |
| switch (((TableResultX) r.tr).sql_type[column]) { |
| case Types.SMALLINT: return "java.lang.Short"; |
| case Types.INTEGER: return "java.lang.Integer"; |
| case Types.REAL: |
| case Types.DOUBLE: return "java.lang.Double"; |
| case Types.FLOAT: return "java.lang.Float"; |
| case Types.BIGINT: return "java.lang.Long"; |
| case Types.DATE: return "java.sql.Date"; |
| case Types.TIME: return "java.sql.Time"; |
| case Types.TIMESTAMP: return "java.sql.Timestamp"; |
| case Types.BINARY: |
| case Types.VARBINARY: return "[B"; |
| /* defaults to varchar below */ |
| } |
| } |
| return "java.lang.String"; |
| } |
| return null; |
| } |
| |
| public int getColumnCount() throws java.sql.SQLException { |
| if (r != null && r.tr != null) { |
| return r.tr.ncolumns; |
| } |
| return 0; |
| } |
| |
| public int getColumnDisplaySize(int column) throws java.sql.SQLException { |
| return 0; |
| } |
| |
| public String getColumnLabel(int column) throws java.sql.SQLException { |
| column--; |
| String c = null; |
| if (r != null && r.tr != null) { |
| if (column < 0 || column >= r.tr.ncolumns) { |
| return c; |
| } |
| c = r.tr.column[column]; |
| } |
| return c; |
| } |
| |
| public String getColumnName(int column) throws java.sql.SQLException { |
| column--; |
| String c = null; |
| if (r != null && r.tr != null) { |
| if (column < 0 || column >= r.tr.ncolumns) { |
| return c; |
| } |
| c = r.tr.column[column]; |
| if (c != null) { |
| int i = c.indexOf('.'); |
| if (i > 0) { |
| return c.substring(i + 1); |
| } |
| } |
| } |
| return c; |
| } |
| |
| public int getColumnType(int column) throws java.sql.SQLException { |
| column--; |
| if (r != null && r.tr != null) { |
| if (column >= 0 && column < r.tr.ncolumns) { |
| if (r.tr instanceof TableResultX) { |
| return ((TableResultX) r.tr).sql_type[column]; |
| } |
| return Types.VARCHAR; |
| } |
| } |
| throw new SQLException("bad column index"); |
| } |
| |
| public String getColumnTypeName(int column) throws java.sql.SQLException { |
| column--; |
| if (r != null && r.tr != null) { |
| if (column >= 0 && column < r.tr.ncolumns) { |
| if (r.tr instanceof TableResultX) { |
| switch (((TableResultX) r.tr).sql_type[column]) { |
| case Types.SMALLINT: return "smallint"; |
| case Types.INTEGER: return "integer"; |
| case Types.DOUBLE: return "double"; |
| case Types.FLOAT: return "float"; |
| case Types.BIGINT: return "bigint"; |
| case Types.DATE: return "date"; |
| case Types.TIME: return "time"; |
| case Types.TIMESTAMP: return "timestamp"; |
| case Types.BINARY: return "binary"; |
| case Types.VARBINARY: return "varbinary"; |
| case Types.REAL: return "real"; |
| /* defaults to varchar below */ |
| } |
| } |
| return "varchar"; |
| } |
| } |
| throw new SQLException("bad column index"); |
| } |
| |
| public int getPrecision(int column) throws java.sql.SQLException { |
| return 0; |
| } |
| |
| public int getScale(int column) throws java.sql.SQLException { |
| return 0; |
| } |
| |
| public String getSchemaName(int column) throws java.sql.SQLException { |
| return null; |
| } |
| |
| public String getTableName(int column) throws java.sql.SQLException { |
| column--; |
| String c = null; |
| if (r != null && r.tr != null) { |
| if (column < 0 || column >= r.tr.ncolumns) { |
| return c; |
| } |
| c = r.tr.column[column]; |
| if (c != null) { |
| int i = c.indexOf('.'); |
| if (i > 0) { |
| return c.substring(0, i); |
| } |
| c = null; |
| } |
| } |
| return c; |
| } |
| |
| public boolean isAutoIncrement(int column) throws java.sql.SQLException { |
| return false; |
| } |
| |
| public boolean isCaseSensitive(int column) throws java.sql.SQLException { |
| return false; |
| } |
| |
| public boolean isCurrency(int column) throws java.sql.SQLException { |
| return false; |
| } |
| |
| public boolean isDefinitelyWritable(int column) |
| throws java.sql.SQLException { |
| return true; |
| } |
| |
| public int isNullable(int column) throws java.sql.SQLException { |
| return columnNullableUnknown; |
| } |
| |
| public boolean isReadOnly(int column) throws java.sql.SQLException { |
| return false; |
| } |
| |
| public boolean isSearchable(int column) throws java.sql.SQLException { |
| return true; |
| } |
| |
| public boolean isSigned(int column) throws java.sql.SQLException { |
| return false; |
| } |
| |
| public boolean isWritable(int column) throws java.sql.SQLException { |
| return true; |
| } |
| |
| int findColByName(String columnName) throws java.sql.SQLException { |
| String c = null; |
| if (r != null && r.tr != null) { |
| for (int i = 0; i < r.tr.ncolumns; i++) { |
| c = r.tr.column[i]; |
| if (c != null) { |
| if (c.compareToIgnoreCase(columnName) == 0) { |
| return i + 1; |
| } |
| int k = c.indexOf('.'); |
| if (k > 0) { |
| c = c.substring(k + 1); |
| if (c.compareToIgnoreCase(columnName) == 0) { |
| return i + 1; |
| } |
| } |
| } |
| c = null; |
| } |
| } |
| throw new SQLException("column " + columnName + " not found"); |
| } |
| |
| public <T> T unwrap(java.lang.Class<T> iface) throws SQLException { |
| throw new SQLException("unsupported"); |
| } |
| |
| public boolean isWrapperFor(java.lang.Class iface) throws SQLException { |
| return false; |
| } |
| |
| } |