JAVA类型和SQL类型的匹配

2008-02-23 09:45:16来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折

已动态创建表为例

(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].getLocalType() " "
typeArray[i].getParams());
}
// 设定数组中的数据库中的类型名和参数,打印出所有匹配的
}
// end for
}//end while
String tableNamePrompt = "输入表名 " "并回车 ";
tableName = getInput(tableNamePrompt);

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:Class Loading ---(类装载机制,开发者不得不知道的故事)

下一篇:如何用servlet在客户端生成一个合成图片