我有一个带有自动增量主键的sqlite数据库,它通过java连接。 出于应用原因,我无法使用数据库中自动生成的主键,因此我需要为java中的每一行创建一个id。
所以我的问题是,是否有针对java的算法,我可以遵循为数据库创建唯一的Integer ID。
我知道我可以增加等但是我需要使用诸如回滚,溢出和填充间隙之类的东西。
答案 0 :(得分:0)
根据您的应用程序要求,您可以将主键Integer更改为String并使用可以轻松使用java util class java.util.UUID
。表示不可变的通用唯一标识符(UUID)。 UUID表示128位值。
如果应用程序具有整数主键的任何持久性。您可以编写一个生成序列号的函数。它背后的逻辑是,基本上它需要有当前序列。如果没有,则调用db并获取最大条目。
static Integer currentSequence=-1;
static Integer function primaryKeyGenerator(){
if(currentSequence==-1){
//Make a db call and get the max
if(no data in table){
currentSequence=1;
}else
currentSequence=rs.getInt(1);
}
return currentSequence+=1;
}