22---数库编程13(元数据)
2012-03-19 09:55
113 查看
1、DataBaseMetaData:
使用元数据可以分心数据库的基本信息,包括版本,数据库的名称等等,或者得到指定表的主键;
/*---创建数据库表
drop table user;
create table user(
id int auto_increment primary key,
name varchar(30) not null,
password varchar(32) not null,
age int not null,
sex varchar(2) default '男',
birthday Date
);
*/
import java.sql.DriverManager;
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.DatabaseMetaData;
import java.sql.ResultSet;
public class Demo{
//定义数据库的驱动程序
public static final String DBDRIVER="org.gjt.mm.mysql.Driver";
//定义数据库的连接地址:
public static final String DBURL="jdbc:mysql://localhost:3306/lid";
//定义数据库的用户名
public static final String DBUSER="root";
//定义数据库的密码
public static final String DBPASSWORD="123";
public static void main(String args[]) throws Exception{
Connection conn=null;
DatabaseMetaData dmd=null;//数据库元数据
ResultSet rs=null;
Class.forName(DBDRIVER);
conn=DriverManager.getConnection(DBURL,DBUSER,DBPASSWORD);
dmd=conn.getMetaData();
System.out.println("数据库的名称:"+dmd.getDatabaseProductName());
System.out.println("数据库版本:"+dmd.getDatabaseMajorVersion()+
"."+dmd.getDatabaseMinorVersion());
//取得数据表的主键,因为主键有多个所以用ResultSet结果集接受
rs=dmd.getPrimaryKeys(null,null,"user");
while(rs.next()){
System.out.println("表类别:"+rs.getString(1));
System.out.println("表模式:"+rs.getString(2));
System.out.println("表名称:"+rs.getString(3));
System.out.println("列名称:"+rs.getString(4));
System.out.println("主键序列号:"+rs.getString(5));
System.out.println("主键名称:"+rs.getString(6));
}
conn.close();
}
}
2、ResultSetMetaData
使用ResultSetMetaData可以获取关于ResultSet对象中列的类型和属性的信息的对象,ResultSetMetaData
存储了ResultSet的MetaData,可以通过以下方法获得ResultSet的信息;
/*---创建数据库表
drop table user;
create table user(
id int auto_increment primary key,
name varchar(30) not null,
password varchar(32) not null,
age int not null,
sex varchar(2) default '男',
birthday Date
);
*/
import java.sql.DriverManager;
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.ResultSetMetaData;
import java.sql.PreparedStatement;
public class Demo{
//定义数据库的驱动程序
public static final String DBDRIVER="org.gjt.mm.mysql.Driver";
//定义数据库的连接地址:
public static final String DBURL="jdbc:mysql://localhost:3306/lid";
//定义数据库的用户名
public static final String DBUSER="root";
//定义数据库的密码
public static final String DBPASSWORD="123";
public static void main(String args[]) throws Exception{
Connection conn=null;
ResultSetMetaData rsmd=null;//数据库元数据
PreparedStatement psmt;
Class.forName(DBDRIVER);
conn=DriverManager.getConnection(DBURL,DBUSER,DBPASSWORD);
String sql="select id,name,password,age,sex,birthday from user";
psmt=conn.prepareStatement(sql);
rsmd=psmt.getMetaData();
System.out.println("一共"+rsmd.getColumnCount()+"列");
if(rsmd.isAutoIncrement(1)){
System.out.println(rsmd.getColumnName(1));//列是自动增长的
}
conn.close();
}
}
以上在用框架是用的比较多;
使用元数据可以分心数据库的基本信息,包括版本,数据库的名称等等,或者得到指定表的主键;
/*---创建数据库表
drop table user;
create table user(
id int auto_increment primary key,
name varchar(30) not null,
password varchar(32) not null,
age int not null,
sex varchar(2) default '男',
birthday Date
);
*/
import java.sql.DriverManager;
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.DatabaseMetaData;
import java.sql.ResultSet;
public class Demo{
//定义数据库的驱动程序
public static final String DBDRIVER="org.gjt.mm.mysql.Driver";
//定义数据库的连接地址:
public static final String DBURL="jdbc:mysql://localhost:3306/lid";
//定义数据库的用户名
public static final String DBUSER="root";
//定义数据库的密码
public static final String DBPASSWORD="123";
public static void main(String args[]) throws Exception{
Connection conn=null;
DatabaseMetaData dmd=null;//数据库元数据
ResultSet rs=null;
Class.forName(DBDRIVER);
conn=DriverManager.getConnection(DBURL,DBUSER,DBPASSWORD);
dmd=conn.getMetaData();
System.out.println("数据库的名称:"+dmd.getDatabaseProductName());
System.out.println("数据库版本:"+dmd.getDatabaseMajorVersion()+
"."+dmd.getDatabaseMinorVersion());
//取得数据表的主键,因为主键有多个所以用ResultSet结果集接受
rs=dmd.getPrimaryKeys(null,null,"user");
while(rs.next()){
System.out.println("表类别:"+rs.getString(1));
System.out.println("表模式:"+rs.getString(2));
System.out.println("表名称:"+rs.getString(3));
System.out.println("列名称:"+rs.getString(4));
System.out.println("主键序列号:"+rs.getString(5));
System.out.println("主键名称:"+rs.getString(6));
}
conn.close();
}
}
2、ResultSetMetaData
使用ResultSetMetaData可以获取关于ResultSet对象中列的类型和属性的信息的对象,ResultSetMetaData
存储了ResultSet的MetaData,可以通过以下方法获得ResultSet的信息;
/*---创建数据库表
drop table user;
create table user(
id int auto_increment primary key,
name varchar(30) not null,
password varchar(32) not null,
age int not null,
sex varchar(2) default '男',
birthday Date
);
*/
import java.sql.DriverManager;
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.ResultSetMetaData;
import java.sql.PreparedStatement;
public class Demo{
//定义数据库的驱动程序
public static final String DBDRIVER="org.gjt.mm.mysql.Driver";
//定义数据库的连接地址:
public static final String DBURL="jdbc:mysql://localhost:3306/lid";
//定义数据库的用户名
public static final String DBUSER="root";
//定义数据库的密码
public static final String DBPASSWORD="123";
public static void main(String args[]) throws Exception{
Connection conn=null;
ResultSetMetaData rsmd=null;//数据库元数据
PreparedStatement psmt;
Class.forName(DBDRIVER);
conn=DriverManager.getConnection(DBURL,DBUSER,DBPASSWORD);
String sql="select id,name,password,age,sex,birthday from user";
psmt=conn.prepareStatement(sql);
rsmd=psmt.getMetaData();
System.out.println("一共"+rsmd.getColumnCount()+"列");
if(rsmd.isAutoIncrement(1)){
System.out.println(rsmd.getColumnName(1));//列是自动增长的
}
conn.close();
}
}
以上在用框架是用的比较多;
相关文章推荐
- 22---数库编程11(JDBC2.0)
- 22---数库编程12(事务处理)
- 22---数库编程14(jdbc连接oracle)
- 【软件测试自动化-QTP系列讲座 22】 == 描述性编程 ==
- WCF分布式开发步步为赢(3)WCF服务元数据交换、配置及编程开发
- 多线程编程13-----Exchanger同步工具类实现两线程数据交换
- day13:JavaScript DOM编程学习笔记05
- 黑马程序员——java学习13(毕22)——GUI
- Socket编程实践(13) --UNIX域协议
- ES6学习——元数据(meta)编程:代理(Proxies)应用示例
- ES6学习——元数据(meta)编程:反射(Reflect)API介绍
- Unix/Linux环境C编程入门教程(22) C/C++如何获取程序的运行时间
- 【PHP面向对象(OOP)编程入门教程】13.访问类型(public,protected,private)
- 1,2,3,5,7,8,10,11,12,13,14,15,16,21,22 -》1~3,5,7~8,10~16,21~22
- Java编程题目-13:Ugly Number
- 一列数的规则如下: 1、1、2、3、5、8、13、21、34...... 求第30位数是多少.请编程实现。提示:可声明1个数组 按照规律为每1个元素赋值.
- 9-13 shell工作原理和编程中知识点总结
- 编程之美 set 13 光影切割问题
- 【编程游戏】贺岁放礼花。(点燃175楼web_show的焰火)(修改自169楼Free_Wind22)
- (挑战编程_13_1)Dog and Gopher