我用getTables从数据库里取表的名字,总是有问题?敬请高手赐教!!!谢谢!

ruby123 2002-02-08 11:28:28
con = DriverManager.getConnection(url);
dma =con.getMetaData();
String[] types = new String[1];
types[0] = "TABLES";
results = dma.getTables(null, null, "%", types);

...全文
277 点赞 收藏 21
写回复
21 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
ruby123 2002-03-12
haichuang(不戒和尚)给了我正确答案,我在此谢谢他!!!
ResultSet tables = metaData.getTables( "person", null,null, table );
中间的两个参数要用:null,null.
回复
haichuang 2002-03-05
我用的就是SQL SERVER 2000呀,执行完全正确!能将你的代码贴出来吗,我可以在我这里测试一下。或给我发信:hcx-yz@sohu.com
回复
wolfsquare 2002-03-05
有可能是驱动问题...我用的是inet的驱动.
回复
ruby123 2002-03-05
我用的是SQL SERVER 2000,既然7.0都可以,那2000更没有问题了,我只是需要这条语句成功:
ResultSet rs=conn.getMetaData().getTables(dbName,null,null,new String[]{"TABLE"});
但是rs返回总是null。
要取表的名字是有很多方法,我只是想为什么这个方法不行,我查过了getTables这文档,说有的数据库可能不支持,但我想SQL SERVER 2000这最起码的应该支持。为什么 ?

回复
ruby123 2002-03-04
其实,
results = dma.getTables(null, null, "", nill);
没有错,后面的两个参数我都试过好几种。我用的是SQL SERVER,可能是不支持,有谁用过?请告诉我是什么原因?
回复
fifth_season 2002-03-04
你们不要把通用报表中的程序到处贴
回复
wolfsquare 2002-03-04
另外说明一下:我用的也是MS SQL, 7.0。
回复
wolfsquare 2002-03-04
我的代码是实际运行过正确的....
如果不行的话,不是你的其它地方出问题就是我开发的程序一直在欺骗我....
回复
haichuang 2002-03-04
ResultSet rs = conn.getMetaData().getTables(dbName,null,null,new String[]{"TABLE"});
while(rs.next()){
System.out.println(rs.getString(3));
}
回复
haichuang 2002-03-04
哈哈!我刚写了一个简单的工具,给你贴一下源代码:
==================================================
//DatabaseTool.java

package ejbdesign;

import java.sql.*;

public class DabaseTool {
private DBConn conner;
public DabaseTool(DBConn dbConnection){
this.conner = dbConnection;
}
public java.util.List getTableNameList(String dbName) throws java.sql.SQLException, java.lang.ClassNotFoundException{
Connection conn = conner.getConn();
java.util.ArrayList result = new java.util.ArrayList();
//conn.setCatalog(dbName);
ResultSet rs = conn.getMetaData().getTables(dbName,null,null,new String[]{"TABLE"});
while(rs.next()){
result.add(rs.getString(3));
}
conn.close();
return result;
}
public java.util.List getDbNameList() throws java.sql.SQLException, java.lang.ClassNotFoundException{
Connection conn = conner.getConn();
java.sql.DatabaseMetaData dmd = conn.getMetaData();
java.util.ArrayList result = new java.util.ArrayList();
ResultSet rs = dmd.getCatalogs();
while(rs.next()){
result.add(rs.getString(1));
}
conn.close();
return result;
}

public static void main(String[] args) throws Exception{
//MSSQLDBConn conn = new MSSQLDBConn("dbserver");
ODBCConn conn = new ODBCConn("Oriental");
DabaseTool dbt = new DabaseTool(conn);
pr("Database List\n");
pr("==================\n");
pr(dbt.getDbNameList());
pr("Table list in Oriental\n");
pr("======================\n");
pr(dbt.getTableNameList(null));
}
public static void pr(Object p){
System.out.print(p);
}
public static void pr(Object[] p){
for(int i=0; i<p.length;i++){
pr(p[i]);
}
}
public static void pr(java.util.List list){
for(int i=0; i<list.size(); i++){
pr(list.get(i));
pr("\n");
}
}
public static void pr(ResultSet p) throws Exception{
java.sql.ResultSetMetaData rsmd = p.getMetaData();
int cols = rsmd.getColumnCount();
for(int i=1;i<=cols;i++){
pr(rsmd.getColumnName(i)+"\t");
}
pr("\n=================================================================================\n");
while(p.next()){
for(int i=1; i<=cols; i++){
pr(p.getString(i)+"\t");
}
pr("\n");
}
}
}
回复
peifeinet 2002-03-04
不用考虑的这么复杂吧,SQL SERVER不是有个系统表SYSOBJECTS嘛,他里面有你所有的表的名称呀!!你可以试试,没有必要一定要用JAVA呀!!
回复
zling 2002-03-03
对不起,是String[]型的,不过应该是types[0] = "TABLE";
而不是types[0] = "TABLES";

回复
Virginer 2002-03-02
你用的是什么数据库?看看是不是数据库方面的问题,是不是缺少系统级支持的存储过程啊!
回复
zling 2002-03-02
嗨!types是String[][]型,不是String[]型
回复
wolfsquare 2002-03-01
为什么dma.getTables你一定要加"%"呢? 试着将它用null来代替?
回复
ruby123 2002-03-01
有谁用过
con = DriverManager.getConnection(url);
dma =con.getMetaData();
String[] types = new String[1];
types[0] = "TABLES";
results = dma.getTables(null, null, "%", types);
我得到的results 总是空的,为什么取不出表名?请高手赐教!!!这个问题搞了我几个星期了。
回复
wolfsquare 2002-02-08
void loadDataBaseTableInfo(){ // 从已指定数据库中获取所有表名,填入列表选择框
int i;
int NumberOfTable;
DatabaseMetaData dbMeta;
ResultSet resultset;
String currentCatalog;
String[] TableType={"TABLE","VIEW"};
String TableName;
Vector listdata=new Vector(20,10);

if (connection!=null){
try{

dbMeta=connection.getMetaData();
currentCatalog=connection.getCatalog ();
resultset=dbMeta.getTables(currentCatalog,null,null,TableType);

while(resultset.next()){
TableName=resultset.getObject(3).toString();
listdata.addElement (TableName);
}
jCboTableName.setModel(new DefaultComboBoxModel(listdata));
if(jCboTableName.getItemCount()>0){
jCboTableName.setSelectedIndex(0);
}

}
catch(SQLException ex){
System.err.println(ex);
return;
}

}
}
回复
ruby123 2002-02-08
TO skyyoung(路人甲):
你好!你是这个论坛的高手!我知道,我的好几个问题都是你解决的。谢谢你!!!
我的问题是:我要从数据库中取出所有表的清单。
回复
skyyoung 2002-02-08
java.sql
Interface ResultSetMetaData
All Known Subinterfaces:
RowSetMetaData

--------------------------------------------------------------------------------

public interface ResultSetMetaData
An object that can be used to get information about the types and properties of the columns in a ResultSet object. The following code fragment creates the ResultSet object rs, creates the ResultSetMetaData object rsmd, and uses rsmd to find out how many columns rs has and whether the first column in rs can be used in a WHERE clause.


ResultSet rs = stmt.executeQuery("SELECT a, b, c FROM TABLE2");
ResultSetMetaData rsmd = rs.getMetaData();
int numberOfColumns = rsmd.getColumnCount();
boolean b = rsmd.isSearchable(1);





--------------------------------------------------------------------------------

Field Summary
static int columnNoNulls
The constant indicating that a column does not allow NULL values.
static int columnNullable
The constant indicating that a column allows NULL values.
static int columnNullableUnknown
The constant indicating that the nullability of a column's values is unknown.
Method Summary
String getCatalogName(int column)
Gets the designated column's table's catalog name.
String getColumnClassName(int column)
Returns the fully-qualified name of the Java class whose instances are manufactured if the method ResultSet.getObject is called to retrieve a value from the column.
int getColumnCount()
Returns the number of columns in this ResultSet object.
int getColumnDisplaySize(int column)
Indicates the designated column's normal maximum width in characters.
String getColumnLabel(int column)
Gets the designated column's suggested title for use in printouts and displays.
String getColumnName(int column)
Get the designated column's name.
int getColumnType(int column)
Retrieves the designated column's SQL type.
String getColumnTypeName(int column)
Retrieves the designated column's database-specific type name.
int getPrecision(int column)
Get the designated column's number of decimal digits.
int getScale(int column)
Gets the designated column's number of digits to right of the decimal point.
String getSchemaName(int column)
Get the designated column's table's schema.
String getTableName(int column)
Gets the designated column's table name.
boolean isAutoIncrement(int column)
Indicates whether the designated column is automatically numbered, thus read-only.
boolean isCaseSensitive(int column)
Indicates whether a column's case matters.
boolean isCurrency(int column)
Indicates whether the designated column is a cash value.
boolean isDefinitelyWritable(int column)
Indicates whether a write on the designated column will definitely succeed.
int isNullable(int column)
Indicates the nullability of values in the designated column.
boolean isReadOnly(int column)
Indicates whether the designated column is definitely not writable.
boolean isSearchable(int column)
Indicates whether the designated column can be used in a where clause.
boolean isSigned(int column)
Indicates whether values in the designated column are signed numbers.
boolean isWritable(int column)
Indicates whether it is possible for a write on the designated column to succeed.

回复
wolfsquare 2002-02-08
请将出错信息发上来看看。
回复
相关推荐
关于Mysql8.0版本驱动getTables返回所有库的表问题浅析
主要给大家介绍了关于Mysql 8.0版本驱动getTables返回所有库的表问题的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
解决问题--DatabaseMetaData的getTables()返回所有数据库信息
java.sql.DatabaseMetaData的getTables()传入了schemaPattern,传的数据库名,但是返回的却是所有库的信息 函数全写: ResultSet getTables(String catalog, String schemaPattern, String tableNamePattern, ...
DatabaseMetaData中getTables获取数据库所有(查表)
jdbc学习 oracle数据库使用
数据库表名字段名小大写问题处理
表名或字段名小写转大写,或者大写转小写都是一样的,修改后可直接执行, ...程序对应Oracle数据库,其它数据库可以参考使用 有问题留言 import java.sql.*; import java.util.ArrayList; import java....
ClickHouse数据库和数据
文章目录ClickHouse数据库和数据大小写敏感数据库数据库操作ClickHouse数据库引擎数据存储目录数据数据操作创建数据复制结构复制结构和数据 ClickHouse数据库和数据 ClickHouse的语法与MySQL很类似,...
java获取sql中的所有,如何从数据库获取所有表名?
I'd like to retrieve all table names from a database schema, and, if possible, get all table starting with a specified prefix.I tried using JDBC's connection.getMetaData().getTables() but it didn't wo...
Mysql 8.0版本驱动getTables返回所有库的问题
MySQL Connector/J 8.0版本驱动向下兼容之前的5.5+版本MySQL,如果你使用的是5.5+版本MySQL,都可以升级成8.0版本驱动。 如果你是使用的5.X版本驱动,需要将Driver Class换成: com.mysql.cj.jdbc.Driver 需要注意的...
问题解决:DatabaseMetaData.getTables()方法,返回了所有库中的
  DatabaseMetaData .getTables()方法常常用来获取数据库中的所有信息。 但想要获取的本地数据库db_test中的信息,出现了错误。 try { Connection conn = DBManager.getConnection(); DatabaseMetaData ...
如何将数据库导出生成Excel?
2.如何Java生成Excel? 3.将数据库中的导出生成Excel案例如何通过元数据拿到数据库的信息 元数据:描述数据的数据 Java中使用元数据的两个方法 DatabaseMetaData 通过连接可以拿到的信息:数据库软件,所有...
使用DatabaseMetaData.getTable获取数据库的全部或视图
获取一个数据库的全部表名,广为人知的应该是通过SQL去查,比方说: Oracle数据库获取全部表名的SQL如:select * from user_tables; MySQL数据库获取全部表名的SQL如:SHOW TABLES; SQLServer数据库获取全部表名的...
数据库APPARENT DEADLOCK!!! - C3P0连接池DeadLock机制分析
APPARENT DEADLOCK!!! - C3P0连接池DeadLock...近期,刚上线不久的生产系统的数据库连接池 C3P0 (版本为0.9.5.2)突然报出 APPARENT DEADLOCK!!! 错误。 1.1 错误日志 错误日志如下。 com.mchange.v2.async.ThreadP...
问题解决:DATABASEMETADATA.GETTABLES()方法,返回了所有库中的
//获取所有字段 private List<String> getFieldListFromConnectMetaData(@NonNull DatabaseConnectModel model, String tableName) { try { Class.forName(model.getDriverClassName()); Connection ...
java获取数据库里表名字
一.Java方法// 得到当前数据库下所有的表名 Java代码 publicvoidgetTableNameByCon(Connectioncon){ try{ DatabaseMetaDatameta=con.getMetaData(); ResultSetrs=meta.getTables(null,n...
python查看数据库存在_python sqlite3查看数据库所有(table)
master,结构如下:sqlite_master(type TEXT, #类型:table-,index-索引,view-视图name TEXT, #名称:表名,索引名,视图名tbl_name TEXT,rootpage INTEGER,sql TEXT)'''#查看某数据库中...
Java获取数据库表结构
虽然各个DB厂商查询数据库表结构的语句不同,但是Java中通过封装,可以使用共同的API来获取。 各个具体的DB厂商各自的实现,只需导入相应的包即可。
JDBC –如何从数据库中打印所有表名?
一个连接到PostgreSQL并默认数据库postgres打印出所有的JDBC示例 pom.xml <dependencies> <dependency> <groupId>org.postgresql</groupId> <artifactId>postgr...
代码生成工具是如何将数据库表转换成Model的?
使用过Mybatis的都知道个代码生成工具,Mybatis-Generator,可以生成Mapper文件、Dao类,Model实体文件,非常好用,作为他的扩展Mybatis-Plus也同样这样的功能,根据数据库中的信息生成Java文件,但是他底层是...
获取数据库下的所有信息,注释,字段信息,字段注释
public class TableInfoVo { private String ...//名称 private String tableType;//或视图 private Integer tableCount;//表格的数据量 private String tableRemarks;//注释 private List<Col...
从数据库中筛选指定
在查询数据的时候,通常存在跨查询的情况。 /** * 根据起始时间查询所有涉及的 * 如果没有起始时间,则统计所有的air_data_****,并返回 * @param startedDate * @param endDate * @return */ ...
使用DatabaseMetaData获取数据库元数据来自动创建等操作
背景:最近这么一个需求,需要在serviceB服务器上的数据库databaseB中每月创建一个tableB_month,然后每月将serviceA服务器上的数据库databaseAtableA里面的数据导入到tableB_month数据库里面。...
判断数据库表是否存在以及修改表名的方法
一、判断数据库表是否存在: 首先要拿到数据库连接conn,调用DatabaseMetaData dbmd = conn.getDataMeta();之后调用如下方法: 代码如下: /** * 根据表名,判断数据库表是否存在 * @param tableName * @return true:...
初学者不想写SQL?来教你写一个自动生成!
实现这个功能,你只需要掌握JDBC的基本手写实现(在不使用框架的基础之上)。 首先,你需要一个集成的JDBC(这里是手写的,所以大家可以根据自己的需求按需求写代码) 注意这里的版本切换,mysql5.X与mys.
获取数据库表的所有内容
package com.springboot.demo; import java.sql.*; import java.util.ArrayList; import java.util.List; public class DatabaseUtil { private static final String DRIVER = "com.mysql.jdbc.Driver";... ...
JDBC已成功连接到数据库,但是无法获取数据的名称?
JDBC成功连接到数据库在逐步调式的时候,也看到生成的连接了。 ----- _**应老师的要求,要获取一个数据库中所有的名称,下面是写的一个函数,提示没有错误,但最后打印结果,为空。**_ ------- ...
Java来比对两个数据库的所有,输出、字段、注解不同的地方到txt文件中
我们工作中经常会用到多个环境下的数据库,因此需要经常同步开发、生产的数据库表结构,所以这边java开发了一个可以快速比对2个不同数据库的所有结构的工具类。 使用方法: 依赖:JDK1.8、MySql8、lombok(作用...
java从数据库读取结构生成实体类
亲测可用,但是其中生成几张对应的实体,有些的字段类型没写进去的需要自己补充,要不要生成get,set方法可以自己看着改改 package com.springdemo.getEntityFromMysql; import java.io.File; import java.io....
DatabaseMetaData类的getTable()、getColumns()方法使用,以及参数的传递问题,针对oracle、mysql、...
DatabaseMetaData类DatabaseMetaData实例的获取获取数据库属性的方法getTable()方法getColumns()方法 DatabaseMetaData类是java.sql包中的类,利用它可以获取我们连接到的数据库的结构、存储等很多信息。如: 1、...
根据数据库配置获取数据库、字段的信息
引入相应的数据库依赖 <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> <dependency> ...
名师精讲CSS3
CSS3即层叠样式表(Cascading Style Sheet), 在网页制作时采用层叠样式表技术,可以有效地对页面的布局、字体、颜色、背景和其它效果实现更加精确的控制。只要对相应的代码做一些简单的修改,就可以改变同一页面的不同部分,或者页数不同的网页的外观和格式。 本课程讲述了CSS3的实战应用,包括对网页修改以及对页面的布局、字体、颜色、背景和其它效果实现更加精确的控制。 通过本课程的学习,学者将可实现基本网页修改与美化,掌握CSS3对网页修改以及对页面的布局、字体、颜色、背景和其它效果实现更加精确的控制,并逐步达到熟练使用CSS3的学习效果,为自己的职场能力添砖加瓦。
过程控制系统课程设计(锅炉汽包温度控制系统论文)
本次设计采用串级控制系统对锅炉汽包温度进行控制。 过程控制系统由过程检测、变送和控制仪表、执行装置等组成,通过各种类型的仪表完成对过程变量的检测、变送和控制,并经执行装置作用于生产过程。 串级控制系统是两只调节器串联起来工作,其中一个调节器的输出作为另一个调节器的给定值的系统。此系统改善了过程的动态特性,提高了系统控制质量,能迅速克服进入副回路的二次扰动,提高了系统的工作频率,对负荷变化的适应性较强。 串级控制系统工程应用场合如下: (1)应用于容量滞后较大的过程。 (2)应用于纯时延较大的过程。 (3)应用于扰动变化激烈而且幅度大的过程。 (4)应用于参数互相关联的过程。 (5)应用于非线性过程。 正因为串级控制系统具有上述特点,所以本次设计采用串级控制系统对锅炉汽包温度进行控制。 采用单片机作为主控制器,锅炉汽包温度为主被控对象,上水的流量为副被控对象,电磁阀为执行器,利用AD590传感器检测汽包温度,利用流量传感器检测上水流量。锅炉汽包温度串级控制系统框图如图1.1所示,系统原理图如图1.2所示。
发帖
非技术区
创建于2007-09-28

2.3w+

社区成员

Java 非技术区
申请成为版主
帖子事件
创建了帖子
2002-02-08 11:28
社区公告
暂无公告