如题,求思路,有代码更好啦 

解决方案 »

  1.   


    package com.csdn;import java.util.Scanner;public class GetTable { // 构造下数据 JDBC就 不写了 JDBC查询 public static boolean checktb(String name) {
    //模拟数据库中所有的表名
    String[] a = {"tab1","tab2","tab3","tab4","tab5"};
    for (int i = 0; i < a.length; i++) {
    // 模拟select name from tabs
    if (name.trim().equals(a[i])) {
    System.out.println("该表--" + name + "存在---");
    return true;
    }
    }
    return false;
    } // 控制台控制控制name输入
    public static void manageName() {
    System.out.println("请输入您需要验证的tab:");
    Scanner s = new Scanner(System.in);
    String name = s.nextLine();
    if (checktb(name)) {
    // 继续
    manageName();
    } else {
    System.out.println("该表--" + name + "--不---存在---");
    // 继续
    manageName();
    }
    }

    public static void main(String[] args){

    manageName();
    }
    }输出;
    请输入您需要验证的tab:
    tab1
    该表--tab1存在---
    请输入您需要验证的tab:
    tab7
    该表--tab7--不---存在---
    请输入您需要验证的tab:
      

  2.   

    那就使用 JDBC 啊,JDBC 中有个 java.sql.DatabaseMetaData 接口,里面有 getColumns 可以查看某个表的列,
    getTables 可以查看某个数据库(模式)中的数据表。
      

  3.   

    PreparedStatement pstmt = conn.prepareStatement(strsql);
    ResultSetMetaData rsmd = pstmt.getMetaData();
    嗯,用了这个方法了,可是提示出错
    emp
    java.sql.SQLException: ORA-01003: 语句未进行语法分析 at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:180)
    at oracle.jdbc.ttc7.TTIoer.processError(TTIoer.java:208)
    at oracle.jdbc.ttc7.v8Odscrarr.receive(v8Odscrarr.java:192)
    at oracle.jdbc.ttc7.TTC7Protocol.describe(TTC7Protocol.java:592)
    at oracle.jdbc.driver.OracleStatement.describe(OracleStatement.java:5496)
    at oracle.jdbc.driver.OracleResultSetMetaData.<init>(OracleResultSetMetaData.java:76)
    at oracle.jdbc.driver.OracleResultSetImpl.getMetaData(OracleResultSetImpl.java:156)
    at oracle.jdbc.driver.OraclePreparedStatement.getMetaData(OraclePreparedStatement.java:829)
    at GenEntity.show(GenEntity.java:44)
    at GenEntity.main(GenEntity.java:57)
      

  4.   

    这是完整代码
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.ResultSetMetaData;
    import java.sql.SQLException;
    import java.sql.Statement;public class GenEntity {
    public void show() {
    System.out.println("请输入表名:");
    String s = null;
    try {
    BufferedReader br = new BufferedReader(new InputStreamReader(
    System.in));
    s = br.readLine();
    br.close();
    } catch (IOException e) {
    e.printStackTrace();
    } Connection conn = null;
    Statement stm = null;
    String tablename = s;
    ResultSet rst = null;
    String strsql = "select * from " + tablename; String[] colnames = null; // 列名数组 String[] colTypes = null; // 列名类型数组 int[] colSizes = null; // 列名大小数组 try {
    Class.forName("oracle.jdbc.driver.OracleDriver");
    conn = DriverManager.getConnection(
    "jdbc:oracle:thin:@Steven:1521:oracle9", "scott", "tiger");
    stm = conn.createStatement();
    rst = stm.executeQuery(strsql);
    PreparedStatement pstmt = conn.prepareStatement(strsql);
    ResultSetMetaData rsmd = pstmt.getMetaData();
    while (rst.next()) {
    System.out.println(rst.getInt(1) + " " + rst.getString(2));
    } } catch (SQLException e) {
    e.printStackTrace();
    } catch (ClassNotFoundException e) {
    e.printStackTrace();
    }
    } public static void main(String args[]) {
    new GenEntity().show();
    }}
      

  5.   

    为什么会出这个错啊?数据库是oracle9i
      

  6.   

    我记得应该是ResultSet的getMetaData();  而不是statement的
      

  7.   

    或者sql语句用"desc 表名" 遍历结果集