Home | History | Annotate | Download | only in JDBC2z
      1 package SQLite.JDBC2z;
      2 
      3 import java.sql.*;
      4 
      5 public class JDBCResultSetMetaData implements java.sql.ResultSetMetaData {
      6 
      7     private JDBCResultSet r;
      8 
      9     public JDBCResultSetMetaData(JDBCResultSet r) {
     10 	this.r = r;
     11     }
     12 
     13     public String getCatalogName(int column) throws java.sql.SQLException {
     14 	return null;
     15     }
     16 
     17     public String getColumnClassName(int column) throws java.sql.SQLException {
     18 	column--;
     19 	if (r != null && r.tr != null) {
     20 	    if (column < 0 || column >= r.tr.ncolumns) {
     21 		return null;
     22 	    }
     23 	    if (r.tr instanceof TableResultX) {
     24 		switch (((TableResultX) r.tr).sql_type[column]) {
     25 		case Types.SMALLINT:	return "java.lang.Short";
     26 		case Types.INTEGER:	return "java.lang.Integer";
     27 		case Types.REAL:
     28 		case Types.DOUBLE:	return "java.lang.Double";
     29 		case Types.FLOAT:	return "java.lang.Float";
     30 		case Types.BIGINT:	return "java.lang.Long";
     31 		case Types.DATE:	return "java.sql.Date";
     32 		case Types.TIME:	return "java.sql.Time";
     33 		case Types.TIMESTAMP:	return "java.sql.Timestamp";
     34 		case Types.BINARY:
     35 		case Types.VARBINARY:	return "[B";
     36 		/* defaults to varchar below */
     37 		}
     38 	    }
     39 	    return "java.lang.String";
     40 	}
     41 	return null;
     42     }
     43 
     44     public int getColumnCount() throws java.sql.SQLException {
     45 	if (r != null && r.tr != null) {
     46 	    return r.tr.ncolumns;
     47 	}
     48 	return 0;
     49     }
     50 
     51     public int getColumnDisplaySize(int column) throws java.sql.SQLException {
     52 	return 0;
     53     }
     54 
     55     public String getColumnLabel(int column) throws java.sql.SQLException {
     56 	column--;
     57 	String c = null;
     58 	if (r != null && r.tr != null) {
     59 	    if (column < 0 || column >= r.tr.ncolumns) {
     60 		return c;
     61 	    }
     62 	    c = r.tr.column[column];
     63 	}
     64 	return c;
     65     }
     66 
     67     public String getColumnName(int column) throws java.sql.SQLException {
     68 	column--;
     69 	String c = null;
     70 	if (r != null && r.tr != null) {
     71 	    if (column < 0 || column >= r.tr.ncolumns) {
     72 		return c;
     73 	    }
     74 	    c = r.tr.column[column];
     75 	    if (c != null) {
     76 		int i = c.indexOf('.');
     77 		if (i > 0) {
     78 		    return c.substring(i + 1);
     79 		}
     80 	    }
     81 	}
     82 	return c;
     83     }
     84 
     85     public int getColumnType(int column) throws java.sql.SQLException {
     86 	column--;
     87 	if (r != null && r.tr != null) {
     88 	    if (column >= 0 && column < r.tr.ncolumns) {
     89 		if (r.tr instanceof TableResultX) {
     90 		    return ((TableResultX) r.tr).sql_type[column];
     91 		}
     92 		return Types.VARCHAR;
     93 	    }
     94 	}
     95 	throw new SQLException("bad column index");
     96     }
     97 
     98     public String getColumnTypeName(int column) throws java.sql.SQLException {
     99 	column--;
    100 	if (r != null && r.tr != null) {
    101 	    if (column >= 0 && column < r.tr.ncolumns) {
    102 		if (r.tr instanceof TableResultX) {
    103 		    switch (((TableResultX) r.tr).sql_type[column]) {
    104 		    case Types.SMALLINT:	return "smallint";
    105 		    case Types.INTEGER:		return "integer";
    106 		    case Types.DOUBLE:		return "double";
    107 		    case Types.FLOAT:		return "float";
    108 		    case Types.BIGINT:		return "bigint";
    109 		    case Types.DATE:		return "date";
    110 		    case Types.TIME:		return "time";
    111 		    case Types.TIMESTAMP:	return "timestamp";
    112 		    case Types.BINARY:		return "binary";
    113 		    case Types.VARBINARY:	return "varbinary";
    114 		    case Types.REAL:		return "real";
    115 		    /* defaults to varchar below */
    116 		    }
    117 		}
    118 		return "varchar";
    119 	    }
    120 	}
    121 	throw new SQLException("bad column index");
    122     }
    123 
    124     public int getPrecision(int column) throws java.sql.SQLException {
    125 	return 0;
    126     }
    127 
    128     public int getScale(int column) throws java.sql.SQLException {
    129 	return 0;
    130     }
    131 
    132     public String getSchemaName(int column) throws java.sql.SQLException {
    133 	return null;
    134     }
    135 
    136     public String getTableName(int column) throws java.sql.SQLException {
    137 	column--;
    138 	String c = null;
    139 	if (r != null && r.tr != null) {
    140 	    if (column < 0 || column >= r.tr.ncolumns) {
    141 		return c;
    142 	    }
    143 	    c = r.tr.column[column];
    144 	    if (c != null) {
    145 		int i = c.indexOf('.');
    146 		if (i > 0) {
    147 		    return c.substring(0, i);
    148 		}
    149 		c = null;
    150 	    }
    151 	}
    152 	return c;
    153     }
    154 
    155     public boolean isAutoIncrement(int column) throws java.sql.SQLException {
    156 	return false;
    157     }
    158 
    159     public boolean isCaseSensitive(int column) throws java.sql.SQLException {
    160 	return false;
    161     }
    162 
    163     public boolean isCurrency(int column) throws java.sql.SQLException {
    164 	return false;
    165     }
    166 
    167     public boolean isDefinitelyWritable(int column)
    168 	throws java.sql.SQLException {
    169 	return true;
    170     }
    171 
    172     public int isNullable(int column) throws java.sql.SQLException {
    173 	return columnNullableUnknown;
    174     }
    175 
    176     public boolean isReadOnly(int column) throws java.sql.SQLException {
    177 	return false;
    178     }
    179 
    180     public boolean isSearchable(int column) throws java.sql.SQLException {
    181 	return true;
    182     }
    183 
    184     public boolean isSigned(int column) throws java.sql.SQLException {
    185 	return false;
    186     }
    187 
    188     public boolean isWritable(int column) throws java.sql.SQLException {
    189 	return true;
    190     }
    191 
    192     int findColByName(String columnName) throws java.sql.SQLException {
    193 	String c = null;
    194 	if (r != null && r.tr != null) {
    195 	    for (int i = 0; i < r.tr.ncolumns; i++) {
    196 		c = r.tr.column[i];
    197 		if (c != null) {
    198 		    if (c.compareToIgnoreCase(columnName) == 0) {
    199 			return i + 1;
    200 		    }
    201 		    int k = c.indexOf('.');
    202 		    if (k > 0) {
    203 			c = c.substring(k + 1);
    204 			if (c.compareToIgnoreCase(columnName) == 0) {
    205 			    return i + 1;
    206 			}
    207 		    }
    208 		}
    209 		c = null;
    210 	    }
    211 	}
    212 	throw new SQLException("column " + columnName + " not found");
    213     }
    214 
    215     public <T> T unwrap(java.lang.Class<T> iface) throws SQLException {
    216 	throw new SQLException("unsupported");
    217     }
    218 
    219     public boolean isWrapperFor(java.lang.Class iface) throws SQLException {
    220 	return false;
    221     }
    222 
    223 }
    224