本人在用Java+MySql开发一个小项目。在数据库中设计了几个字段,字段用的是英文。
现在我想取得表中的字段名,然后在界面中用中文显示出来,比如字段是Name,我想显示‘姓名’,不知道怎么办。能不能将字段设为中文(比如‘姓名’),然后直接获取列名,不知道这方法可取不?网上也有人说,再建一个关联的表,将英文字段与中文名称对应,然后连起来获取,不知道这怎么做?也有说为表的字段设置别名,不知道行不?在下渴求高手指点!!!

解决方案 »

  1.   

    SQL:select name as 姓名, sex as 性别 from table 
    java:
    rs.getString("姓名");
    rs.getString("性别");可取到。
      

  2.   

    我是想要获取表的列名,比如有字段:Name、Sex,然后转化为:名字、性别,然后new一个字符窜数组,包括:名字、年龄。上面的方法是可以的。不过现在,我想在Java程序中用输入的中文字符(年龄)做为一个字段插入到表中,这样的话,你上面的查询语句就要修改了,要加入 ‘age as 年龄’ 才能将所有列名取到,并返回一数组。这样的话,在程序中插入或者删除一个列就要修改程序了,这样的程序不行啊?
      

  3.   

    看这个:java.sql.DatabaseMetaData的用法一 . 得到这个对象的实例
    Connection con ;
    con = DriverManager.getConnection(url,userName,password);
    DatabaseMetaData dbmd = con.getMetaData();二. 方法getTables的用法
    原型:
    ResultSet DatabaseMetaData.getTables(String catalog,String schema,String tableName,String []type) 
    此方法可返回结果集合ResultSet ,结果集中有5列, 超出会报越界异常功能描述:得到指定参数的表信息参数说明:
    参数:catalog:目录名称,一般都为空.
    参数:schema:数据库名,对于oracle来说就用户名
    参数:tablename:表名称
    参数:type :表的类型(TABLE | VIEW)注意:在使用过程中,参数名称必须使用大写的。否则得到什么东西。三. 方法getColumns的用法功能描述:得到指定表的列信息。原型:
    ResultSet DatabaseMetaData getColumns(String catalog,String schema,String tableName,String columnName)参数说明:
    参数catalog : 类别名称
    参数schema : 用户方案名称
    参数tableName : 数据库表名称
    参数columnName : 列名称四、方法getPrimaryKeys的用法功能描述:得到指定表的主键信息。原型:
    ResultSet DatabaseMetaData getPrimaryKeys(String catalog,String schema,String tableName)参数说明:
    参数catalog : 类别名称
    参数schema : 用户方案名称
    参数tableName : 数据库表名称备注:一定要指定表名称,否则返回值将是什么都没有。五、方法.getTypeInfo()的用法功能描述:得到当前数据库的数据类型信息。六、方法getExportedKeys的用法功能描述:得到指定表的外键信息。参数描述:
    参数catalog : 类别名称
    参数schema : 用户方案名称
    参数tableName : 数据库表名称DatabaseMetaData对象提供的是关于数据库的各种信息,这些信息包括:1、数据库与用户,数据库标识符以及函数与存储过程。
    2、数据库限制。
    3、数据库支持不支持的功能。
    4、架构、编目、表、列和视图等。通过调用DatabaseMetaData的各种方法,程序可以动态的了解一个数据库。由于这个类中的方法非常的多那么就介绍几个常用的方法来给大家参考。DatabaseMetaData实例的获取方法是,通过连接来获得的
    Connection conn = //创建的连接。
    DatabaseMetaData dbmd = Conn.getMetaData();创建了这个实例,就可以使用他的方法来获取数据库得信息。首先是数据库中用户标识符的信息的获得,主要使用如下的方法:getDatabaseProductName()用以获得当前数据库是什么数据库。比如oracle,access等。返回的是字符串。
    getDatabaseProductVersion()获得数据库的版本。返回的字符串。
    getDriverVersion()获得驱动程序的版本。返回字符串。
    supportsResultSetType(ResultSet.resultype)是判定是否支持这种结果集的类型。比如参数如果是Result.TYPE_FORWARD_ONLY,那就是判定是否支持,只能先前移动结果集的指针。返回值为boolean,true表示支持。上面介绍的只是几个常用的方法,这个类中还有很多方法,可以到jdk的帮助文档中去查看类java.sql.DatabaseMetaData。这个类中还有一个比较常用的方法就是获得表的信息。使用的方法是:
    getTables(String catalog,String schema,String tableName,String[] types),这个方法带有四个参数,他们表示的含义如下:
    String catalog——要获得表所在的编目。串“”””意味着没有任何编目,Null表示所有编目。
    String schema——要获得表所在的模式。串“”””意味着没有任何模式,Null表示所有模式。该参数可以包含单字符的通配符(“_”),也可以包含多字符的通配符(“%”)。
    String tableName——指出要返回表名与该参数匹配的那些表,该参数可以包含单字符的通配符(“_”),也可以包含多字符的通配符(“%”)。
    String types——一个指出返回何种表的数组。可能的数组项是:”TABLE”,”VIEW”,”SYSTEM TABLE”,”GLOBAL TEMPORARY”,”LOCAL TEMPORARY”,”ALIAS”,“SYSNONYM”。通过getTables()方法返回一个表的信息的结果集。这个结果集包括字段有:TABLE_CAT表所在的编目。TABLE_SCHEM表所在的模式,TABLE_NAME表的名称。TABLE_TYPE标的类型。REMARKS一段解释性的备注。通过这些字段可以完成表的信息的获取。还有两个方法一个是获得列getColumns(String catalog,String schama,String tablename,String columnPattern)一个是获得关键字的方法getPrimaryKeys(String?catalog, String?schema, String?table)这两个方法中的参数的含义和上面的介绍的是相同的。凡是pattern的都是可以用通配符匹配的。getColums()返回的是结果集,这个结果集包括了列的所有信息,类型,名称,可否为空等。getPrimaryKey()则是返回了某个表的关键字的结果集。通过getTables(),getColumns(),getPrimaryKeys()就可以完成表的反向设计了。主要步骤如下:1、通过getTables()获得数据库中表的信息。
    2、对于每个表使用,getColumns(),getPrimaryKeys()获得相应的列名,类型,限制条件,关键字等。
    3、通过1,2获得信息可以生成相应的建表的SQL语句。
    DatabaseMetaData databaseMetaData = conn.getMetaData();
     
            //获取所有表
            ResultSet tableSet = databaseMetaData.getTables(null, "%", "%", new String[]{"TABLE"});
            //获取tableName表列信息
            ResultSet columnSet = databaseMetaData.getColumns(null, "%", tableName, "%");
    上面代码会得到两个结果集,对照DatabaseMetaData 的文档,我们可以通过结果集的列名来获取想要的信息,例如
     
        String tableName = tableSet.getString("TABLE_NAME");
        String tableComment = tableSet.getString("REMARKS");
     
        String columnName = columnSet.getString("COLUMN_NAME");
        String columnComment = columnSet.getString("REMARKS");
        String sqlType = columnSet.getString("DATA_TYPE");