元数据(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)); }