用Java實現自動在資料庫表中生成ID號 原創

2021-08-22 01:48:00 字數 1609 閱讀 7955

前段時間用struts開發了乙個b/s結構的資訊管理系統,其中有乙個功能是要求管理員能夠對資料字典進行修改,資料字典的表結構基本上都是table(id, name),id為資料庫其它表中所儲存的內容,表示方式為a01、a02、a08、b10、b25、c12等等,乙個字典就分配乙個字母作為其id號的標識,其實就是為了除錯時方便,在其它的表中判斷該字典的名稱。因此對於乙個特定的字典表來說,其id號排序應該是a01、a02、a03、a04…… 

在對字典內容進行刪除的時候並不需要考慮什麼,直接使用delete語句就可以了。關鍵是新增字典資訊時,管理員需要在表單中填寫的是table中的name欄位,id號如何生成就需要自己用**來實現(包括id號的01號空缺,中間有斷開等情況)。下面是我設計的**,其中關鍵的地方都有詳細的注釋:

/* * 功能:增加字典資訊時,自動生成最小的id號碼

* 引數:string 字典表名稱 first 字典id的首字母,代表唯一的字典

* 返回:string 生成的最小id號碼

*/public string getid(string table, string first) 

stm = con.createstatement(resultset.type_scroll_insensitive, resultset.concur_updatable);

rst = stm.executequery(sql);

while (rst.next()) 

sid = new int[k];

rid = new string[k];

rst = stm.executequery(sql);

// 如果不存在結果集,則直接在first字母後面加01,例如first="a",rid_new=a01

if (!rst.first()) 

// 如果存在結果集,則將表中所有id號存入陣列中,並轉換為整型資料

else 

*/for (rst.previous(); rst.next(); i++) 

// 如果第一條記錄id號不為fisrt+01,例如a03、a05、a18等,則返回新增資料的id號為a01

if (sid[0] != 1) 

// 如果第一條記錄id號為first+1,即a1,則執行下面語句

else 

else 

else 

}// 如果相鄰兩條記錄id號的整數字相差非1,則返回新增資料id號整數字是前一位id號整數字加1

if (sid[j] != sid[j-1] + 1) 

else }}

return rid_new;}}

}     

}catch (sqlexception e) 

finally 

catch (sqlexception e1) }}

注意:之所以生成a01而不是a1,是因為在sqlserver2000中根據id號正確排序的需要,如果按照公升序排列,a1後面是a10、a11等,而不是a2。另外,在hibernate中有多種自動生成id欄位的方法,但是這個專案比較小,我沒有使用hibernate中介軟體,這裡提供的只是生成字典id欄位的一種簡單思路,只能用於字典項不多於100項的情況,一般的情況可以滿足了,但如果超過100項只需簡單修改一下**,不足之處還請大家多指教!

Java在資料庫操作中批量插入資料

class.forname com.mysql.jdbc.driver connection con connection drivermanager.getconnection jdbc mysql localhost 3306 excel2mysql wanle wanle 關閉事務自動提交 c...

B樹在資料庫怎麼用

首先,b樹不要和二叉樹混淆,在電腦科學中,b樹是一種自平衡樹資料結構,它維護有序資料並允許以對數時間進行搜尋,順序訪問,插入和刪除。b樹是二叉搜尋樹的一般化,因為節點可以有兩個以上的子節點。1 與其他自平衡二進位制搜尋樹不同,b樹非常適合讀取和寫入相對較大的資料塊 如光碟 的儲存系統。它通常用於資料...

如何在資料庫表中建立復合主鍵

即多個字段同時作為主鍵 主鍵是資料庫表的乙個重要屬性,建立主鍵可以避免表中存在完全相同的記錄,也就是說主鍵在一張表中的記錄值是唯一的。建立主鍵有兩種方法 一種是在資料庫提供的gui環境中建立,另一種是通過sql語句執行建立,下面分別介紹。1.在資料庫提供的gui環境中建立 以sql7為例 輸入表資訊...