元数据(MetaData),又称中介数据,中继数据,为描述数据的数据(data about data),主要是描述数据属性(property)的信息。元数据是关于数据的组织、数据域及其关系的信息,简言之,元数据就是关于数据的数据。

       以结果集ResultSet为例。

/**
 * 1,加载驱动
 * 2,建立连接
 * 3,创建Statement
 * 4,执行sql
 * 5,处理ResultSet
 * 6,释放资源
 */
public static void main(String[] args) throw Exception{
     String driver="com.mysql.cj.jdbc.Driver";
     String url="jdbc:mysql://localhost:3306/testdb?characterEncoding=utf8&useSSL=false&serverTimezone=GMT&allowPublicKeyRetrieval=false&useUnicode=true";
     String username="sa";
     String password="admin";
     //加载驱动
     Class.forName(driver);
     //建立连接
     Connection connection= DriverManager.getConnection(url,username,password);
      //创建Statement
      Statement statement=connection.createStatement();
      String sql="select * from userinfo";
      //执行sql
      ResultSet resultSet=statement.executeQuery(sql);
      //处理ResultSet
      while(resultSet.next()){
           //处理resultSet
      }
      //释放资源
      if(resultSet!=null){
            resultSet.close();
      }
      if(statement!=null){
            statement.close();
      }
      if(connection!=null){
            connection.close();
      }
}

从xml文件中读取数据库的配置信息,然后处理

/**
 * 1,加载驱动
 * 2,建立连接
 * 3,创建Statement
 * 4,执行sql
 * 5,处理ResultSet
 * 6,释放资源
 */
public class MetaDataDemo {
    public static void main(String[] args) throws Exception {
        InputStream inputStream= Resources.getResourceAsStream("SqlMapConfig.xml");
        Configuration configuration = XmlConfigBuilder.loadXmlConfig(inputStream);
        Class.forName(configuration.getDriver());
        Connection connection = DriverManager.getConnection(configuration.getUrl(), configuration.getUsername(), configuration.getPassword());
        Statement statement = connection.createStatement();
        String sql="select * from userinfo";
        ResultSet resultSet = statement.executeQuery(sql);
        User user;
        while(resultSet.next()){
            user=new User();
            user.setUserId(resultSet.getInt("userid"));
            user.setUserName(resultSet.getString("username"));
            user.setUserSex(resultSet.getString("usersex"));
            user.setUserAge(resultSet.getInt("userage"));
            user.setUserAddress(resultSet.getString("useraddress"));
            System.out.println(user);
        }
        if(resultSet!=null){
            resultSet.close();
        }
        if(statement!=null){
            statement.close();
        }
        if(connection!=null){
            connection.close();
        }
    }
}

ResultSet元数据,通过getMeta方法得到一个封装所有结果集的对象ResultSetMetaData。通过metaData.getColumnCount()获取总列数,metaData.getColumnName(i)获取列的名称。其中i是从1开始的。

        ResultSetMetaData metaData = resultSet.getMetaData();
        for(int i=1;i<=metaData.getColumnCount();i++){
            System.out.println(metaData.getColumnName(i));
        }

 

 posted on 2019-07-23 21:35  会飞的金鱼  阅读(729)  评论(0编辑  收藏  举报