请教,如何得到一个表得主键是哪几列?使用jdbc,可以得到吗?我查了没查到.

superzrb 2005-03-03 06:22:29
如题,万分感谢!
...全文
115 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
fog628 2005-07-08
  • 打赏
  • 举报
回复
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.DatabaseMetaData;
import java.sql.SQLException;
import java.sql.DriverManager;

import java.util.List;
import java.util.ArrayList;

class AutoScrollTest{
public static Connection getConnection(String driver,
String url,
String user,
String pwd) throws Exception{
Class.forName(driver);
Connection cnn = DriverManager.getConnection(url, user, pwd);

return cnn;
}

public static List getPrimaryKeysByTableName(Connection cnn, String tableName)
throws Exception{

List list = new ArrayList();
DatabaseMetaData dbMetaData = cnn.getMetaData();
ResultSet rs = dbMetaData.getPrimaryKeys(null, null, tableName);
/* getPrimaryKeys()返回了一个ResultSet,ResultSet里面有:
*
* TABLE_CAT String => table catalog (may be null)
* TABLE_SCHEM String => table schema (may be null)
* TABLE_NAME String => table name
* COLUMN_NAME String => column name
* KEY_SEQ short => sequence number within primary key
* PK_NAME String => primary key name (may be null)
*
**/
while(rs.next()){
//只从ResultSet里面取了COLUMN_NAME
//就是主键的列名
list.add((rs.getString("COLUMN_NAME")));

System.out.println( rs.getString("TABLE_CAT") + "\t" +
rs.getString("TABLE_SCHEM") + "\t" +
rs.getString("TABLE_NAME") + "\t" +
rs.getString("COLUMN_NAME") + "\t" +
rs.getShort("KEY_SEQ") + "\t" +
rs.getString("PK_NAME"));
}

return list;

}
public static void main(String[] args){
String driver = "com.microsoft.jdbc.sqlserver.SQLServerDriver";
String url = "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=pubs";
String user = "sa";
String pwd = "";

try{
Connection c = getConnection(driver, url, user, pwd);
List primaryKeys = getPrimaryKeysByTableName(c, "authors");

System.out.println();
System.out.print("primary keys are: ");
System.out.println(primaryKeys);
}catch(Exception e){
e.printStackTrace();
}
}
}
haha-mark 2005-07-08
  • 打赏
  • 举报
回复
这个应该充数据库中得到,各个数据库得到的方法不同,一般都提供存储过程
shoulders 2005-07-08
  • 打赏
  • 举报
回复
谢谢楼上的,学到知识了。

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧