ChinaUnix首页 > 精华文章 > DB2 > 正文

[精彩] 请问:db2怎么象oracle一样取序列生成器,谢谢


http://www.chinaunix.net 作者:richardluopeng  发表于:2004-06-11 10:43:57
发表评论】 【查看原文】 【DB2讨论区】【关闭

请问:db2怎么象oracle一样取序列生成器,谢谢



 大连老K 回复于:2003-04-30 15:21:28

DB7.2以后才有sequence这个对象,创建的时候和oralce一样,不过使用的时候有点区别。
nextval for sequencename
prevval for sequencename
而不是sequencename.nextval


 xdoris 回复于:2003-04-30 17:35:29

EEE不支持identity column.
do not know whether V8.1 support it


 大连老K 回复于:2003-05-01 10:43:59

引用:原帖由 "xdoris" 发表:
EEE不支持identity column.
do not know whether V8.1 support it


7.2以后的版本应该都支持identity column


 richardluopeng 回复于:2003-05-01 14:06:24

什么是identity column. 
谢谢!


 vlife 回复于:2003-05-01 15:18:37

自动增加的字段在数据导入和导出的时候大家都用的什么方法啊??


 richardluopeng 回复于:2003-05-07 11:51:46

小第还有问题请教大家:

我使用的是java ,我用java怎么获取这个sequence的值

另外,sequence的创建是不是和oracle 一样
 create squence squence_name ......

谢谢大家!

另外还有问题求大家,救命呀,搞不定我就死定了!!



1,我用的是db2的db2java.zip
中的COM.ibm.db2.jdbc.app.DB2Driver

它的url怎么写,我在本机上使用jdbc:db2:sample,它好象使用db2的客户端,可是我用jdbc:db2://127.0.0.1:500000:sample连不通呀急死我了
问题是我还不知道怎么在db2的客户端添加连接呀我的是db2v8.1


2

jdbc 的 executeBatch问题
conn.setAutoCommit(true); 
s = conn.createStatement();
s.addBatch( "delete from ecare_cache where query_id = '" + newQueryId + "'" );
s.executeBatch();

我查jdbc的api,这个方法返回的是一个整型的数组,是怎么回事,我怎么判断是否全部正确执行??
我try {}catch{}吗,还是有别的办法!


 大连老K 回复于:2003-05-07 12:11:16

1、jdbc连接的默认端口应该是6789


 大连老K 回复于:2003-05-07 12:12:20

引用:原帖由 "vlife"]自动增加的字段在数据导入和导出的时候大家都用的什么方法啊??
 发表:


对于用下面DDL语句建立的表,在LOAD操作时如何控制自生成列的值?
create table idn1(id integer, name char(20), dn integer not null generated always as identity (start with 1, increment by 1)) 
解答 可以在LOAD命令中加下面参数控制自生成列:
1 modified by identityignore
加载的数据文件中有自生成列值,LOAD时忽略数据文件中自生成列值
2 modified by identitymissing
加载的数据文件中没有自生成列值,LOAD时自动生成自生成列值
3 modified by identityoverride
加载的数据文件中有自生成列值,LOAD时使用用数据文件中的自生成列值

例如:
在数据文件idn1.del的内容如下:
1,"Test ----------------",1
2,"Test ----------------",2
3,"Test ----------------",3
4,"Test ----------------",4
5,"Test ----------------",5

在数据文件idn2.del的内容如下:
1,"Test -----------------"
2,"Test -----------------"
3,"Test ---------------- "
4,"Test -----------------"
5,"Test -----------------"

select * from idn1的输出为:
ID -----NAME -----------DN
------- ------------- ------
--------1 Test ---------1
--------2 Test ---------2
--------3 Test ---------3
3 条记录已选择。


执行下面LOAD命令后
load from idn1.del of del modified by identityignore insert into idn1
select * from idn1的输出为:
ID -----NAME ---------DN
------- ------------ -------
-------1 Test ---------1
-------2 Test--------- 2
-------3 Test--------- 3
-------1 Test--------- 4
-------2 Test--------- 5
-------3 Test--------- 6
-------4 Test--------- 7
-------5 Test ---------8

8 条记录已选择。 执行下面LOAD命令后
load from idn2.del of del modified by identitymissing insert into idn1
db2 select * from idn1的输出为:
ID ----NAME ------DN
------ --------- -------
-----1 Test -----1
-----2 Test -----2
-----3 Test -----3
-----1 Test -----4
-----2 Test -----5
-----3 Test----- 6
-----4 Test -----7
-----5 Test -----8
8 条记录已选择。

执行下面LOAD命令后
load from idn1.del of del modified by identityoverride insert into idn1
select * from idn1的输出为:
ID -----NAME----- DN
------ --------- --------
-----1 Test -----1
-----2 Test -----2
-----3 Test -----3
-----1 Test----- 1
-----2 Test -----2
-----3 Test----- 3
-----4 Test -----4
-----5 Test -----5
8 条记录已选择。


 richardluopeng 回复于:2003-05-07 13:51:17

6789,我试了,不行,是不是驱动不行

我用的是db2的 db2java.zip的那个,是不是有问题呀??


 大连老K 回复于:2003-05-07 14:12:47

引用:原帖由 "richardluopeng" 发表:
6789,我试了,不行,是不是驱动不行

我用的是db2的 db2java.zip的那个,是不是有问题呀??


com.ibm.db2.jdbc.app.DB2Driver是本机连接的驱动
com.ibm.db2.jdbc.net.DB2Driver是远程连接的驱动
如果是本机的话试试下面的URL
url="jdbc:db2:dbname"

试试


 richardluopeng 回复于:2003-05-07 14:44:07

谢谢您,

还请问一下:

com.ibm.db2.jdbc.net.DB2Driver用到的jar文件什么地方可以找到,谢谢!


是不是也在db2java.zip里??


 大连老K 回复于:2003-05-07 15:05:50

引用:原帖由 "richardluopeng" 发表:
谢谢您,

还请问一下:

com.ibm.db2.jdbc.net.DB2Driver用到的jar文件什么地方可以找到,谢谢!


是不是也在db2java.zip里??



都是用的db2java.zip这个文件。
不同的是com.ibm.db2.jdbc.app.DB2Driver是在访问本地的数据源或是访问通过db2的客户端在本地建立了一个远程数据库的数据源的时候,用它。
而com.ibm.db2.jdbc.net.DB2Driver是直接访问远程数据库的时候用的。
ibm建议当用application访问的时候用app,当applet访问的时候用net


 richardluopeng 回复于:2003-05-12 10:09:20

老k大哥,还要请问一个问题,我建了3个sequence ,为什么每次

select nextval for mMT_MemId_seq3  from sysibm.syssequences


取的值是3个,



F:\Program Files\IBM\SQLLIB\BIN>;db2 select nextval for mMT_MemId_seq3  from sysi
bm.syssequences

1
-----------
         13
         14
         15

  3 条记录已选择。


F:\Program Files\IBM\SQLLIB\BIN>;



就象上面的这样是怎么回事??


 jecky_luo 回复于:2003-05-15 14:09:26

引用:原帖由 "大连老K" 发表:
DB7.2以后才有sequence这个对象,创建的时候和oralce一样,不过使用的时候有点区别。
nextval for sequencename
prevval for sequencename
而不是sequencename.nextval



为什么在db2的文档里没有记载?


 macxia 回复于:2004-06-11 10:43:57

回复/**richardluopeng 回复于:2003-05-07 14:44:07 
谢谢您, 
com.ibm.db2.jdbc.net.DB2Driver用到的jar文件什么地方可以找到,谢谢! 
是不是也在db2java.zip里??
**/
.jar .war .ear 的文件格式都是 .zip




原文链接:http://bbs.chinaunix.net/viewthread.php?tid=59271
转载请注明作者名及原文出处