已动态创建表为例
(1)
public class DataType {
private int code;
private String SQLType;
private String localType = null;
private String params = null;
private boolean needsSetting = true;
public DataType(int code, String SQLType) {
this.code = code;
this.SQLType = SQLType;
}
public boolean needsToBeSet() {
return needsSetting;
}
public int getCode() {
return code;
}
public String getSQLType() {
return SQLType;
}
public String getLocalType() {
return localType;
}
public String getParams() {
return params;
}
public void setLocalTypeAndParams(String local, String p) {
if (needsSetting) {
localType = local;
params = p;
needsSetting = false;
}
}
}
(2)
import java.sql.*;
public class SQLTypesCreate {
public static void main(String [ ] args) {
String url="jdbc:oracle:thin:@localhost:1521:oral";
String user="SYSTEM";
String pass="manager";
try {
Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
} catch(Exception e){System.out.println(e);}
try {
Connection con = DriverManager.getConnection(url, user,pass);
Statement stmt = con.createStatement();
String tableName;
// 创建表语句中的表名变量
String columnName;
// 列名变量
String sqlType;
// 数据类型变量
// 以上三个变量都是为了创建建表语句服务的
DataType [ ] typeArray = {
new DataType(java.sql.Types.BIT, "BIT"),
new DataType(java.sql.Types.TINYINT, "TINYINT"),
new DataType(java.sql.Types.SMALLINT, "SMALLINT"),
new DataType(java.sql.Types.INTEGER, "INTEGER"),
new DataType(java.sql.Types.BIGINT, "BIGINT"),
new DataType(java.sql.Types.FLOAT, "FLOAT"),
new DataType(java.sql.Types.REAL, "REAL"),
new DataType(java.sql.Types.DOUBLE, "DOUBLE"),
new DataType(java.sql.Types.NUMERIC, "NUMERIC"),
new DataType(java.sql.Types.DECIMAL, "DECIMAL"),
new DataType(java.sql.Types.CHAR, "CHAR"),
new DataType(java.sql.Types.VARCHAR, "VARCHAR"),
new DataType(java.sql.Types.LONGVARCHAR, "LONGVARCHAR"),
new DataType(java.sql.Types.DATE, "DATE"),
new DataType(java.sql.Types.TIME, "TIME"),
new DataType(java.sql.Types.TIMESTAMP, "TIMESTAMP"),
new DataType(java.sql.Types.BINARY, "BINARY"),
new DataType(java.sql.Types.VARBINARY, "VARBINARY"),
new DataType(java.sql.Types.LONGVARBINARY, "LONGVARBINARY"),
new DataType(java.sql.Types.NULL, "NULL"),
new DataType(java.sql.Types.OTHER, "OTHER"),
};
//创建一个数组用用jdbc SQl数据类型的代码和名字初始化,其它为null
//注意,以上出现的名字全部都是Types类中出现的
DatabaseMetaData dbmd = con.getMetaData();
//创建DatabaseMetaData对象,用来获取数据库的属性
ResultSet rs = dbmd.getTypeInfo();
//获取数据库支持的SQL数据类型
while (rs.next()){
int codeNumber = rs.getInt("DATA_TYPE");
String dbmsName = rs.getString("TYPE_NAME");
String createParams = rs.getString("CREATE_PARAMS");
// 以下是本地数据库支持的数据类型在jdbc中的映射号,本地名,参数
//System.out.println(codeNumber+" "+dbmsName+" "+createParams);
for (int i = 0; i < typeArray.length; i++) {
if (typeArray[i].getCode() == codeNumber) {
// 如果typeArray中的元素代码等于本地数据库类型的代码,
// 就可以把typeArray中的类型名设成从DatabaseMetaData获得的本地名
typeArray[i].setLocalTypeAndParams(
dbmsName, createParams);
System.out.println("匹配的code,SQLType,localType,params有:");
System.out.println(typeArray[i].getCode()+" "+
typeArray[i].getSQLType()+" "+
typeArray[i].getLoca
[1] [2] [3] 下一页