1. 程式人生 > >獲取多個隨機生成的不重複的6位數,不重複的6位數或8位數串

獲取多個隨機生成的不重複的6位數,不重複的6位數或8位數串

獲取多個隨機生成的6位數,每次獲取都不會與前一次重複 

思路1:建立一張表table,每次生成一條之後,查詢一下表中是否已存在這樣的話,資料越來越多,後面就挺麻

煩的,判斷多次才能取到一個表中不存在的 

思路2:建議一次性在資料庫表中插入多條資料(如10000條), 表名table、主鍵自增長id、隨機數:randoms,

編寫程式 執行insert 語句插入 然後建立一個sequence,從1開始,步數為1 

select randoms from table where id = (select sequence.nextval from dual);

SQL如下:

drop table tbl_random;
create table tbl_random(
    id int not null auto_increment,
    num varchar(6),
    misc varchar(10),
    primary key(id)
);
insert into tbl_random(num,misc) values('098787','000');

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class Test {
	static PreparedStatement pre = null;
	static ResultSet rs = null;

	public static void main(String[] args) {
		for (int i = 0; i < 100; i++) {
			String result = new Test().getRandom();
			System.out.println(result);
			while (exits(result) == 0) {
				execInsert(result);
				break;
			}
		}
	}

	public String getRandom() {
		String result = "";
		// 下面的6改成8就是8位隨機數字
		while (result.length() < 6) {
			String str = String.valueOf((int) (Math.random() * 10));
			if (result.indexOf(str) == -1) {
				result += str;
			}
		}
		return result;
	}

	public static int exits(String num) {
		try {
			String sql2 = "select * from tbl_random where num='" + num +"'";
			pre = getConnect().prepareStatement(sql2);
			rs = pre.executeQuery();
			System.out.println(sql2);

			List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
			ResultSetMetaData md = rs.getMetaData();
			int count = md.getColumnCount();
			while (rs.next()) {
				Map<String, Object> rowData = new HashMap<String, Object>();
				for (int i = 1; i <= count; i++) {
					rowData.put(md.getColumnName(i), rs.getObject(i));
				}
				list.add(rowData);
			}
			if (list.size() > 0) {
				return 1;
			}else{
				return 0;
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return 0;
	}

	public static void execInsert(String str) {
		try {
			String sql = "insert into tbl_random(num,misc) values(?,?)";
			pre = getConnect().prepareStatement(sql);
			pre.setString(1, str);
			pre.setString(2, "--");
			pre.executeUpdate();
			System.out.println(sql);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	public static Connection getConnect() {
		String Driver = "com.mysql.jdbc.Driver";
		String url = "jdbc:mysql://localhost:3306/test";
		String user = "root";
		String password = "pwd";
		Connection con = null;
		try {
			Class.forName(Driver).newInstance();
			con = DriverManager.getConnection(url, user, password);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return con;
	}
}


相關推薦

獲取隨機生成重複6位數,重複6位數8位數

獲取多個隨機生成的6位數,每次獲取都不會與前一次重複  思路1:建立一張表table,每次生成一條之後,查詢一下表中是否已存在這樣的話,資料越來越多,後面就挺麻 煩的,判斷多次才能取到一個表中不存在的  思路2:建議一次性在資料庫表中插入多條資料(如10000條), 表名t

python基礎一 ------如何獲取字典相同的鍵

class dom 集合 pre app wke 生成 參數 tool 需求: 足球賽第一場進去統計 {"A":3,"B":2,"C":1}足球賽第二場進去統計 {"A":3,"C":1}足球賽第二場進去統計 {"A":2,"B":2}統計每場都有進球的人----&g

在java中隨機生成一個無序且長度大於10的字符

image ack con 技術 exti pen collect tint span package xiangmu; import java.util.ArrayList; import java.util.Collections; import java.ut

KindEditor獲取textarea文本框的值並判斷非空

div 編輯器 fill star fontsize 取值 pop 獲取 sta kindeditor官網:http://kindeditor.net/demo.php 如何獲取多個KindEditor中textarea文本框的值,方式很多種(帶有HTML標簽)。

安裝版本號jdk後java -version改變的問題解決

art 顯示 pad setting shee css clip ssi -s 1、問題 比方先安裝了jdk7後,再安裝jdk6,java -version就是顯示

織夢欄目arclist調用副欄目顯示的解決辦法

repl ike php 顯示 ssi clist art 主頁 com 織夢arclist調用副欄目不顯示,網上關於這個問題的解決辦法有很多,其中一種是:打開/include/taglib/arclist.lib.php,代碼約位於295-296行(我目前用的DedeCM

jquery怎樣獲取復選框的值?

target ssa cti contain 樣式 val value css樣式 UNC jquery的遍歷方法可以獲取復選框所欲的選中值 1 2 $("input:checkbox:checked").each(function(index,element

python如何獲取excel單元格的值

load 解決 info ace 多層嵌套 traceback spa 數據 多個 一. 獲取多個單元格的值報錯:AttributeError: ‘tuple‘ object has no attribute ‘value‘ 需要讀取的sample.xlsx 代碼讀取的是

jmeter 正則獲取返回token至本地文件,並跨線程組調用

mage 表達 processor csv文件 參數 res 例如 通過 mark 1、打開jmeter,創建setup Thread Group對於setup Thread Group和tearDown Thread Group來說,從字面意思上來看就是安裝線程組和卸載線

在js中無法獲取id值為demo的問題

例如程式碼中: <script> $(document).ready(function(){ $("#demo").hover(function(){ $("h1").css("background-color","yellow"); },function(){

springmvc介面引數中,獲取物件

需求:儲存或者修改時,前端傳多個相同型別的物件,後臺獲取 方法1:(麻煩,不推介) 前臺 :前端資料,通過在名稱加序號,譬如:[{"name_0":"can","sex_0",1},{"name_1":"phil","sex_0",0}] 後臺:通過遍歷,request.get

海思3531獲取攝像頭在整個螢幕的畫面

要想獲取整個攝像頭畫面在整個螢幕的畫面只需要比平常的操作多一步即可,例如通常海思SDK通常提供的VENC例子裡的流程是:VI->VPSS->VENC,而我們把他修改成VI->VPSS->虛擬VO->VENC,這樣我們就可以獲取所有攝像頭在螢幕顯示的畫面。虛擬VO配置如下

Webdriver獲取元素

官方通過如下程式碼獲取多個元素: Java程式碼   List<WebElement> inputs = driver.findElements(By.xpath("//input"));&n

JQuery 同時獲取標籤的指定內容並儲存為陣列

文章來自:原始碼線上https://www.shengli.me/jquery/271.html       此時的list1的陣列中   每個元素已經不是'li'物件,如此執行控制檯會報錯: &nbs

Excel表格,去除其他表格中的重複

需求:有多個表格,要進行多個表格資料匹配,找出相同的資料進行整理,如下圖sheet2去除sheet4中相同的資料 步驟: 1.在要處理的表格(sheet2)的空白單元格D2裡輸入=vlookup(A2,) 2.再選中“參考表格(sheet4)”中要匹配的那列資料(比

jQuery:同一class下,如何獲取div的中的最大高度值

第一:要理解Jq中的獲取高度的三個方法height()、 innerHeight()、outerHeight() height():height innerHeight():height+padding outerHeight():height+padding+bo

迴圈獲取input標籤的值

<script> var str = ''; $(".a").each(function(index,element){        str += $(this).val()+','; }); str = str.substr

Linux將檔案生成.so檔案

本工程共有三個檔案:myhello.c、myhello.h、Makefile myhello.c程式碼如下: #include <stdio.h> #include <string.h> #include "myhello.h" voi

Jmeter--正則表示式提取器獲取id

在測上傳圖片API時,同時上傳多張圖片,API響應資訊中會包含多個id。此時我們想要獲得所有的id,並呼叫刪除圖片API刪除所有上傳的圖片。接下來我們配置一下正則表示式提取器中的資訊。 引用名稱:brand_id 正則表示式:"brand_id":"(.+?)" 模板:

C# Directory.GetFiles()獲取型別格式的檔案

第一種方式 System.IO.Directory.GetFiles()獲取多個型別格式的檔案 System.IO.Directory.GetFiles("c:\","(*.exe|*.txt)");   第二種方式 var files = Directory.GetFi