网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > Java
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
本月文章推荐
.学以致用:写一个属于自己的Rss.
.Java线程入门教程.
.如何使用Java编写多线程程序.
.彻底解决Tomcat的页面提交时的中.
.复制、传递和比较数据.
.[分享]eclipse 3.0 中jre设置的小.
.Struts 1.2.2 新功能全新体验.
.扩展 Hibernate 对各类数据源支持.
.别人观点:如何才算掌握Java.
.异常处理:和日志集成.
.servlet与javabean实现长文本数据.
.开发J2EE应用的要领.
.通过Java.net.Socket 类抓取网页.
.使用JFreeReport生成报表.
.JML起步--使用JML改进你的Java程.
.超级简单的sqlmap工具(ajf sql m.
.将DBMS存储过程封装为会话EJB组件.
.如何搭建J2ME的开发环境之一二.
.Java程序实现Logo画面的编程.
.利用Socket进行Java网络编程(二.

查找数据表的主键

发表日期:2008-1-5



  大多数数据库有许多主键,但是在一个表中不答应两条记录的同一个主键具有相同的值。可以使用Java Database Connectivity(JDBC)来判定一个数据表的主键。
  JDBC具有强大的元数据处理能力。java.sql.Connection类和java.sql.ResultSet类可以通过调用其getMetaData方法进行反射,例如:

// 对java.sql中所有的类Connection connection = .....DatabaseMetaData dbMeta = connection.getMetaData();ResultSet rset = .....ResultSetMetaData rsMeta = rset.getMetaData(); java.sql.DatabaseMetaData类包含一个查找数据表主键的方法。你需要知道表的名字,catalog名和schema名。假如不知道catalog和schema,那么你可以不使用它们而输入“null”。例如:// 查找一个名字为“Comment”的表的主键// 没有catalog或schema,都设置为nullResultSet pkRSet = dbMeta.getPrimaryKeys(null, null, "Comment");while( pkRSet.next() ) { System.err.println("****** Comment ******"); System.err.println("TABLE_CAT : "+pkRSet.getObject(1)); System.err.println("TABLE_SCHEM: "+pkRSet.getObject(2)); System.err.println("TABLE_NAME : "+pkRSet.getObject(3)); System.err.println("COLUMN_NAME: "+pkRSet.getObject(4)); System.err.println("KEY_SEQ : "+pkRSet.getObject(5)); System.err.println("PK_NAME : "+pkRSet.getObject(6)); System.err.println("****** ******* ******");}

在这个例子中表“Comment”具有一个叫做“comment_id”的主键。
下面是上面这些代码在mysql上的输出:
****** Comment ******
TABLE_CAT :
TABLE_SCHEM:
TABLE_NAME : Comment
COLUMN_NAME: column_id
KEY_SEQ : 1
PK_NAME : column_id
****** ******* ******
存在PK_NAME的原因是有时会为一个主键使用列名之外的名字。而KEY_SEQ表示了主键的顺序位置。有些使用字母顺序保存主键的数据库会为KEY_SEQ返回0。
当创建通用的数据库应用时,查找一个表的主键是很基本的。JDBC的MetaData类提供了所需的数据库反射机制,从而使得这些应用的实现成为可能。
上一篇:菜鸟初学Java的备忘录(八) 人气:486
下一篇:参数上溯造型解决了错误的方法调用 人气:545
浏览全部Java的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐