JAVA类型和SQL类型的匹配
2008-02-23 09:45:16来源:互联网 阅读 ()
已动态创建表为例
(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
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash