
您好,提问者:
//如果要得到一个类的具体什么类型,需要进行反射 *** 作,实例代码:String str = "123";
Systemoutprintln(strgetClass()getName());
输出:javalangString
可以查看一下API文档
Java获取数据库的表中各字段的字段名,代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
import javasqlConnection;
import javasqlDriverManager;
import javasqlResultSet;
import javasqlPreparedStatement;
import javasqlResultSetMetaData;
import javasqlSQLException;
public class TestDemo {
public static Connection getConnection() {
Connection conn = null;
try {
ClassforName("commysqljdbcDriver");
String url = "jdbc:mysql://数据库IP地址:3306/数据库名称";
String user = "数据库用户名";
String pass = "数据库用户密码";
conn = DriverManagergetConnection(url, user, pass);
} catch (ClassNotFoundException e) {
eprintStackTrace();
} catch (SQLException e) {
eprintStackTrace();
}
return conn;
}
public static void main(String[] args) {
Connection conn = getConnection();
String sql = "select from AccessType";
PreparedStatement stmt;
try {
stmt = connprepareStatement(sql);
ResultSet rs = stmtexecuteQuery(sql);
ResultSetMetaData data = rsgetMetaData();
for (int i = 1; i <= datagetColumnCount(); i++) {
// 获得所有列的数目及实际列数
int columnCount = datagetColumnCount();
// 获得指定列的列名
String columnName = datagetColumnName(i);
// 获得指定列的列值
int columnType = datagetColumnType(i);
// 获得指定列的数据类型名
String columnTypeName = datagetColumnTypeName(i);
// 所在的Catalog名字
String catalogName = datagetCatalogName(i);
// 对应数据类型的类
String columnClassName = datagetColumnClassName(i);
// 在数据库中类型的最大字符个数
int columnDisplaySize = datagetColumnDisplaySize(i);
// 默认的列的标题
String columnLabel = datagetColumnLabel(i);
// 获得列的模式
String schemaName = datagetSchemaName(i);
// 某列类型的精确度(类型的长度)
int precision = datagetPrecision(i);
// 小数点后的位数
int scale = datagetScale(i);
// 获取某列对应的表名
String tableName = datagetTableName(i);
// 是否自动递增
boolean isAutoInctement = dataisAutoIncrement(i);
// 在数据库中是否为货币型
boolean isCurrency = dataisCurrency(i);
// 是否为空
int isNullable = dataisNullable(i);
// 是否为只读
boolean isReadOnly = dataisReadOnly(i);
// 能否出现在where中
boolean isSearchable = dataisSearchable(i);
Systemoutprintln(columnCount);
Systemoutprintln("获得列" + i + "的字段名称:" + columnName);
Systemoutprintln("获得列" + i + "的类型,返回SqlType中的编号:"+ columnType);
Systemoutprintln("获得列" + i + "的数据类型名:" + columnTypeName);
Systemoutprintln("获得列" + i + "所在的Catalog名字:"+ catalogName);
Systemoutprintln("获得列" + i + "对应数据类型的类:"+ columnClassName);
Systemoutprintln("获得列" + i + "在数据库中类型的最大字符个数:"+ columnDisplaySize);
Systemoutprintln("获得列" + i + "的默认的列的标题:" + columnLabel);
Systemoutprintln("获得列" + i + "的模式:" + schemaName);
Systemoutprintln("获得列" + i + "类型的精确度(类型的长度):" + precision);
Systemoutprintln("获得列" + i + "小数点后的位数:" + scale);
Systemoutprintln("获得列" + i + "对应的表名:" + tableName);
Systemoutprintln("获得列" + i + "是否自动递增:" + isAutoInctement);
Systemoutprintln("获得列" + i + "在数据库中是否为货币型:" + isCurrency);
Systemoutprintln("获得列" + i + "是否为空:" + isNullable);
Systemoutprintln("获得列" + i + "是否为只读:" + isReadOnly);
Systemoutprintln("获得列" + i + "能否出现在where中:"+ isSearchable);
}
} catch (SQLException e) {
eprintStackTrace();
}
}
}
ArrayList 存放的是一个泛型,所以只能把它当成Object类型来使用
所以从思路上来说 你就只能看Object这个类的成员函数
Object有一个成员函数getClass() 通过它可以取出List中某一个对象的举起的类
/Returns the unique instance of {@link Class} that represents this
object's class Note that {@code getClass()} is a special case in that it
actually returns {@code Class< extends Foo>} where {@code Foo} is the
erasure of the type of the expression {@code getClass()} was called upon
<p>
As an example, the following code actually compiles, although one might
think it shouldn't:
<p>
<pre>{@code
List<Integer> l = new ArrayList<Integer>();
Class< extends List> c = lgetClass();}</pre>
@return this object's {@code Class} instance
/
public final native Class<> getClass();
晕,Textbox里面的数据是什么数据类型!!当然是字符串了!!我猜你的意思是想判断下用户在里面输入了什么吧?比如说是输入了数字,字母,还是汉字什么的。
如果是这样的话 你写个判断函数就是了。用left 函数在循环中把每个字符取出来,转换成ASCII码 判断下该字符的ASCII范围就知道了该字符是 数字,字母,还是汉字了。希望能对你有帮助。
经过access测试,ok
String url = "jdbc:odbc:test";//最后一个为数据库名
Statement sm = null;
String command = null;
ResultSet rs = null;
String tableName = null;
String cName = null;
String result = null;
String []pram = new String[1];
List <String> tables = new ArrayList<String>();
pram[0] = "table";
BufferedReader input = new BufferedReader(new InputStreamReader(
Systemin));
try {
try {
ClassforName("sunjdbcodbcJdbcOdbcDriver"); // 加载驱动
} catch (ClassNotFoundException e) {
Systemoutprintln("Can not load Jdbc-Odbc Bridge Driver");
Systemerrprint("ClassNotFoundException:");
Systemerrprintln(egetMessage());
}
Connection con = DriverManagergetConnection(url, "admin", "admin"); // 连接到数据库
DatabaseMetaData dm = congetMetaData();
rs = dmgetTables(null, null, null, pram);//查找所有的表
while(rsnext()){
tablesadd(rsgetString(3));
}
rsclose();
for(String tb : tables){
rs = dmgetColumns(null, null, tb, null);//查找当前表的字段
Systemoutprintln("\nthe table is: " + tb);
ResultSetMetaData rsmd = rsgetMetaData();
int len, type;
len = rsmdgetColumnCount();
// Systemoutprintln(len);
for(int i = 1; i <= len; i ++){
type = rsmdgetColumnType(i);
//这里是获取了一个字段类型的int型,需要转化成string的话要做一个swtich,就不转了,你自己看javasqlTypes这个类去
Systemoutprint("\t" + rsmdgetColumnName(i) + ": " + rsmdgetColumnType(i));
}
}
rsclose();
conclose();
// }
} catch (SQLException ex) {
Systemoutprintln("SQLException:");
while (ex != null) {
Systemoutprintln("Message:" + exgetMessage());
ex = exgetNextException();
}
} catch (Exception e) {
Systemoutprintln("IOException");
}
CREATE PROCEDURE gettableinfo
/@TableName varchar(32)/
AS
/创建临时表/
create table #TableFields(
tableName varchar(32),
fieldname varchar(32),
fieldtype varchar(32),
fieldlength varchar(32),
scale varchar(32),
des varchar(256),
defaultvalue varchar(32),
CanNULL varchar(32)
)
/ 声明游标/
declare table_cur scroll cursor
for select sysobjectsname from sysobjects where sysobjectsxtype = 'U'
for update of sysobjectsname
/声明临时表名/
declare @TName varchar(32)
/ 打开游标/
open table_cur
fetch next from table_cur into @TName
while @@fetch_status=0 begin
SELECT sysobjectsname AS tableName, syscolumnsname AS filedname,
systypesname AS fieldtype, syscolumnslength,
syscolumnsscale
into #FiledInfo_Master
FROM syscolumns INNER JOIN
systypes ON syscolumnsxtype = systypesxtype INNER JOIN
sysobjects ON syscolumnsid = sysobjectsid
WHERE (sysobjectsxtype = 'U') AND (systypesname <> 'sysname') and sysobjectsname=@TName
/得到字段描述/
SELECT objname as filedname ,value into #FiledInfo
FROM ::fn_listextendedproperty('MS_Description', 'user',
'dbo', 'table', @TName,
'column', DEFAULT)
/得到字段缺省值/
SELECT objname as filedname, value as defaultvalue
into #FiledInfo2
FROM ::fn_listextendedproperty('DefaultValue', 'user',
'dbo', 'table', @TName,
'column', DEFAULT)
/得到字段是否可为空/
SELECT objname as filedname, value as CanNULL
into #FiledInfo3
FROM ::fn_listextendedproperty('MS_AllowBlanks', 'user',
'dbo', 'table', @TName,
'column', DEFAULT)
/联结字段描述和属性/
insert into #TableFields
SELECT cast(#FiledInfo_MastertableName as varchar(32)) ,
cast(#FiledInfo_Masterfiledname as varchar(32)),
cast(#FiledInfo_Masterfieldtype as varchar(32)),
cast(#FiledInfo_Masterlength as varchar(32)),
cast(#FiledInfo_Masterscale as varchar(32)),
cast(#FiledInfo[value] as varchar(256)),
cast(#FiledInfo2defaultvalue as varchar(32)),
cast(#FiledInfo3CanNULL as varchar(32))
FROM dbo#FiledInfo_Master LEFT OUTER JOIN
dbo#FiledInfo ON dbo#FiledInfo_Masterfiledname = dbo#FiledInfoFiledName
LEFT OUTER JOIN dbo#FiledInfo2
ON dbo#FiledInfo_Masterfiledname = dbo#FiledInfo2FiledName
LEFT OUTER JOIN dbo#FiledInfo3
ON dbo#FiledInfo_Masterfiledname = dbo#FiledInfo3FiledName
where
#FiledInfo_Mastertablename=@TName
fetch next from table_cur into @TName
--if exists (select from dbosysobjects where id = object_id(N'#FiledInfo_Master') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table #FiledInfo_Master
--if exists (select from dbosysobjects where id = object_id(N'#FiledInfo') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table #FiledInfo
--if exists (select from dbosysobjects where id = object_id(N'#FiledInfo2') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table #FiledInfo2
drop table #FiledInfo3
end
select from #TableFields
deallocate table_cur
GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
以上就是关于\请问java中如何获得数据类型全部的内容,包括:\请问java中如何获得数据类型、java怎样读取数据库表中字段的数据类型、怎样取到ArrayList中的数据类型等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)