求教几个问题,估计需要高手回答

zhaoyifei1 2004-12-23 09:57:32
大字段问题(lob)
为什么jdbc的原生接口中的blob 取不出数据,写不进数据?必须用orace的扩展类?(70分)
元数据问题(ResultSetMetaData)
怎么知道column是不是主键?(30分)
...全文
137 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
peniy 2004-12-23
  • 打赏
  • 举报
回复
人家Oracle公司的jdbc驱动thin模式下没有实现blob中取大于4K数据的功能。那也没办法啊。不用扩展类的不行啊。
楼主要是问为什么Oracle公司不实现,我也不知道。估计是效率的关系。
Philzzf 2004-12-23
  • 打赏
  • 举报
回复
mark
GJA106 2004-12-23
  • 打赏
  • 举报
回复
1.不同的数据库产商不同的牛"庇"--实现的细节有很多差别。认了...:(

2.mssql server数据库--驱动程序类BaseDatabaseMetaData提供getPrimaryKeys
oracle数据库 --自带的demo包中的OracleDatabaseMetaData.java文件提供有getPrimaryKeys方法可能参考

其它就不知道有没有了。
jFresH_MaN 2004-12-23
  • 打赏
  • 举报
回复
2.Blob一般可以用数据库提供的类来读写,是用binarayStream
3.DatabaseMetaData类
ResultSet getPrimaryKeys(String catalog, String schema, String table)
Retrieves a description of the given table's primary key columns
zdsxj2002 2004-12-23
  • 打赏
  • 举报
回复
/**
* 取得表的Key值列表
* @param tabName
* @return
*/
public String getTableKey(String tabName) {

String s = null;
if (tabName != null) {
String s_compare = ",";
try {
DatabaseMetaData dm = conn.getMetaData();
ResultSet rs = dm.getPrimaryKeys(null, "", tabName);

if (rs.next()) { //如果有记录
s = "";
do {
s += rs.getString("COLUMN_NAME") + s_compare;
}
while (rs.next());
}

}
catch (SQLException e) {
System.out.println("出现SQL异常");

}
if (s != null) {
s = s.substring(0, s.length() - s_compare.length());
}
}
return s;
}
取得KEY值后.检查 你的列是否在KEY中存在.
kaymo 2004-12-23
  • 打赏
  • 举报
回复
1。以前看到过,不太记得了,好像要转换成流的方式读写
2。如果只有主见不能使null的话,是否可以用isNullable(int column) 方法或columnNoNulls静态方法
一点遇见,期待高手
gz

62,614

社区成员

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

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