JDBC提供了獲得主鍵的方法..不過你必須支持JDBC2.0
為古丈等地區(qū)用戶提供了全套網頁設計制作服務,及古丈網站建設行業(yè)解決方案。主營業(yè)務為成都網站建設、成都網站設計、古丈網站設計,以傳統方式定制建設網站,并提供域名空間備案等一條龍服務,秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務。我們深信只要達到每一位用戶的要求,就會得到認可,從而選擇與我們長期合作。這樣,我們也可以走得更遠!
Statement stmt=conn.createStatement();
stmt.execute(String sql, Statement .RETURN_GENERATED_KEYS )
執(zhí)行給定的 SQL 語句(該語句可能返回多個結果),并通知驅動程序所有自動生成的鍵都應該可用于檢索。
ResultSet rs=stmt.getGeneratedKeys()//索由于執(zhí)行此 Statement 對象而創(chuàng)建的所有自動生成的鍵
通過RS就可以得到自動生成的主鍵啦..
sql建表語句中直接寫就行了
在java語句中,
String sql="SQL建表語句";
數據庫的主鍵主要的功能就是唯一性,以下是我寫的代碼:
package NormalLearn;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
* 實現主鍵功能,每次生成的字符串唯一性
* @author Administrator
*
*/
public class OrclSeq{
/**
* 流水號=當前時間(8位)
* @return
*/
public synchronized String getCurrentValue(){
try {
//保證數據的唯一性
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
String DateStr = new SimpleDateFormat("yyyyMMddHHmmss").format(new Date());
return DateStr;
}
//線程內部類
class ThreadClass implements Runnable{
@Override
public void run() {
String seq = getCurrentValue();
System.out.println(seq);
}
}
public static void main(String[] args) {
//模擬多線程測試
OrclSeq seq = new OrclSeq();
for(int i=0;i1000;i++) {
new Thread(seq.new ThreadClass()).start();
}
}
}
關于是否重復,首先要說一下uuid生成的原理
UUID是指在一臺機器上生成的數字,它保證對在同一時空中的所有機器都是唯一的
UUID由以下幾部分的組合:
(1)當前日期和時間,UUID的第一個部分與時間有關,如果你在生成一個UUID之后,過幾秒又生成一個UUID,則第一個部分不同,其余相同。
(2)時鐘序列。
(3)全局唯一的IEEE機器識別號,如果有網卡,從網卡MAC地址獲得,沒有網卡以其他方式獲得。
通過組成可以看出,首先每臺機器的mac地址是不一樣的,那么如果出現重復,可能是同一時間下生成的id可能相同,不會存在不同時間內生成重復的數據
至于說同一時間產生重復的數據,就目前來說,是不會的除非極高的高并發(fā)(如果發(fā)生了,也可以通過原子性操作避免),
所以基本上就認為不會重復好了
標題名稱:java代碼生成主鍵方法 java怎么快捷生成main方法
文章鏈接:http://muchs.cn/article40/ddcgiho.html
成都網站建設公司_創(chuàng)新互聯,為您提供網站改版、網站排名、動態(tài)網站、網站建設、靜態(tài)網站、
聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯