如何获取数据库当前的主键字段

如何获取一张表中主键的当前最大的下一个ID,主键不是整型,是字符型,然后我写的java程序中要得到这个id,我先得到了当前的最大idselectmax(id)from当前... 如何获取一张表中主键的当前最大的下一个ID,主键不是整型,是字符型,然后我写的java程序中要得到这个id,我先得到了当前的最大id select max(id) from 当前表,但是得到的是字符串型,基本没用,我试了吧字符串转整,然后+1,然后再转字符串,但是没成功。请大家教一下有别的好方法没? 展开
 我来答
sunshuo16
2010-12-16 · TA获得超过1698个赞
知道大有可为答主
回答量:1432
采纳率:50%
帮助的人:1326万
展开全部
查询数据库利用上边的要领数据库如何设置主键可以由记载生成对象,但是你仍然得用SQL语句来查询数据库,这需要对数据库布局有深切的相识这还是没有解决问题,虽则我们能够不佣人的劳力地般配数据库表和类的名儿,但是还是必需手工编写SQL语句这就是说每一次修改数据库布局后,将不得不手工编辑这些查询语句不外,我们仍然可以利用前文所述的要领来越过这个障碍通常而言,查询关系数据库时,你将会用到属于主键或索引的字段名和值一言弊之,如果或人向你供给了誉肢适当的字段名和字段值

,你就庆袭世可以从响应的数据库中抽取符合要求的记载(或字段)而DatabaseMetaData对象不单可以被用于检索一系列的表名(见上所述数据库主键是啥子),并且可以获得一系列的主键及索引字段上边的问题由此可以迎刃而解

通过填入一系列适当的(字段名,字段值)对,可以利用相对于而言少得多的代码使成为事实对关系数据库的查询你可以将对子中的所有字段名和数据库中的主健及索引字段相般配每一当你找到了名儿列表中响应的主健或索引字段,可以根据响应的数值来生成一个SQL语句,执行它来获取RecordSet,并通过Class.forName()构造机

制将结果转化为对象使成为事实这一设法要求可以以(名,值)对的方式对与数据库表相干的每个类的数据元素进行存取但是这类要领只有通过上节所述的通用父类才能趋于完美清单3和4利用伪码表示数据库主键是啥子了这一要领

Openthedatabaseconnection

Retrievealistofuserdefinedtables

foreachtable

{

Checkwherethereisacorrespondingclassfile

if(itisavailabe)

{

loadtheclassfile

Retrievelistsofkeyfieldsandindecesfort你好stable

StoretheselistsinhashtablesforeasyAccess

}

elsethrowanexception

}

· 清单3:初始化数据库毗连的伪码

TakeanobjectAcontainingaseriesof(name,value)pairs

foreachtableT

{

foreach(name,value)pair

{

if(namematchesprimary_key_fieldorindex_field)

storearefrencetobothnameandvalue

}

ifallkey_fieldswerefound

createaquerystringusingkeynamesandvalues

elseifallindex_fieldswerefound

createaquerystringusingindexnamesandvalues

executethequerytoobtainaResultSet

ForeachrecordintheResultSet

{

CreateanobjectoftheclassassociatedwithtableT

initializetheobjectusingtherecord''''scontents

Addtheobjecttotheresults,eg,attac你好ttoA

}

}

· 清单4:描写数据库查询的伪码

Java镜像和JavabeansJava1.1研发套件(JDK)的引入,为我们带来了很多壮大的新性能,例如全新的用户界面接口类有两个新的JDKAPI尤其值当注重:镜像机制(java.lang.reflect包)和JavaBeans组件的应用程序接口(java.beans包)这两个API将会帮助我们创立高明的数据库类,使我们可以利用有关类的meta-信息,以此来解决研发通用数据库类中的问题

领有forName()和newInstance()要领的Class类,仅只是镜象(reflection)功效的一个简略例子真正重要的是,forName()字符串参数不必需是源程序中出现的字符串只要给出一个名儿(这个禅滚名儿可从任何地方取来),你就可以载入并实例化任何一个类对于我们的数据库类数据库如何设置主键,我们可以直接从数据库自身的表名中得到类名这就是说,与数据库表相干的Java类名其实不需要出现在源程序中响应地,当表名改变或某个表被加入到数据库中时,不需要修改源码,只要确信带有新名儿的类已存在你的体系中

镜像类象征着可以在及时运行中获取、储存和处置惩罚Java程序中的类信息它们的实例能够象任何Java对象同样被运用,你可以象修改字符串和整儿同样,去修改类、数据类型、返回类型、要领参照和参数在源程序级,这个镜像的观点看起来并无啥子价值——因为可以应用你自己的编码直接存取你所需要的有关类、要领及参数的所有信息但是,镜像(reflection)将数据库修改主键会在java的编译文件中发挥作用JavaBeanSAPI的作用是:通过应用程序的构造机制利用来自于全然不同的研发者或产商所编写的类

JavaBeans规范为类成员的名儿制定一系列的条例以确保要领函数的名儿能体系地描写它们的功效任何一个符正当则的Java类均可以被一个Bean的内化实例(通过镜像)查抄,以展现其举动的重要特征——诸如对于啥子样的事件类将有所响应,和该类将会孕育发生啥子样的事件等等任何符合这些规范的类都是高效的Bean,因而是一个组件有理论上,这象征着你可以从各类来历网络一系列beans,当需要它们时可以将其其及时地绑在一路一个Bean的例子

在底下一个名为Translation的Bean中数据库主键生成计谋,有一个构造函数和两个要领来操作一个名为“language”的属性这里我想夸大的是,既然你可以通过查抄一个类的代码来相识它的构造函数、要领及属性,那么Bean的内化器(Introspector)也能做到

publicclassTranslationextendsObject

{

intlanguage;

publictranslation()

{

}

publicintgetlanguage()

{

return(language);

}

publicvoidsetLanguage(intlanguage)

{

t你好slanguage=language;

}

}
crazylaa
推荐于2016-11-15 · TA获得超过234个赞
知道小有建树答主
回答量:287
采纳率:0%
帮助的人:292万
展开全部
select max(to_number(id))+1 from tbl; 直接取颤亏最大友宴值+1
要保证你的id能转换为数字类型,不能含有字符或其他乱七八好洞银糟的东西。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
easysoft_dl
2010-12-15 · 超过36用户采纳过TA的回答
知道答主
回答量:482
采纳率:0%
帮助的人:85.2万
展开全部
6╱E╱For your question ,
5╱A╱,
7╱S╱还有别的要求么,可以与我们联系,
1╱Y╱有时间可以帮没源你,
5╱S╱百度╱hi我吧,
6╱O╱如果您有与本主题同做隐样的需求,也可以来找我们纯察厅,
1╱F╱
5╱T╱ES-2010:\\7E65BF3CE78163839C8CE512DC941CE1
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式