日期:2014-05-18  浏览次数:20804 次

用java写的访问sql server的程序小问题,百度找不到答案
刚学java ,按教程编写访问sql server的代码,写完了增删改查之后 发现如下问题:






问题1: 删除之后,ID就断开了,如果我在代码里面让删除以后,系统自动让后面的ID+1的话,那一旦碰到大的数据库,那不是特别特别的耗内存?
问题2:同样,除了增删改查之后,还有一种输入方法“插入”,就是在两行的中间插入一行,EXCEL里面就有这种,同问题1一样,如果插入的话,ID又得有新的变动。
请问有什么好点的办法,让系统自动实现,上面图片我用的是自增长的int型 ID。百度真心找不到答案、。

------解决方案--------------------
没有找不到的答案。。  这其实用sql语句就可以搞定。


SQL Server中,经常会用到Identity标识列,这种自增长的字段操作起来的确是比较方便。但它有时还会带来一些麻烦。 
示例一 :当表中被删除了某些数据的时候,自增长列的编号就不再是一个连线的数列。这种时候我们可以用以下方案来解决。 
SET IDENTITY_INSERT [TABLE] [ON
------解决方案--------------------
OFF]
允许将显式值插入表的标识列中,当设置为ON时,这时可能在INSERT操作时手工指定插入到标识列中的编号,同时必须在操作完成后,将IDENTITY_INSERT还原成OFF,否则下次插入的时候必须指定编号,那不然就无法完成INSERT操作。 
示例二:当表中的记录被全部删除,但此时标识列的值越来越大的时候,如果不加以重置,它还会无休止的增长。这个时候我们就要用到: 
DBCC CHECKIDENT(TABLE, [RESEED
------解决方案--------------------
NORESEED], [1])
将把指定表的种子值强制重设为1。然而,你可能不想将种子重设为1,在这种情况下,你可以用你想用的种子值替代第三个参数。有时候你可能想知道当前的种子,而不是想重设种子,这时你就要用到NORESEED,而不用再去顾忌第三个参数。

百度真心能找到答案。。看你用不用心了。  我帮你找的,这个分还不给我吗?