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

项目中的问题..请大家给点思路..谢谢~!
需要往数据库里插入100个手机号码.从139010*****到139910*****这两号码段之间     随机产生不重复的手机号码     插入数据库以供使用...请大家给点具体思路     或者核心代码    


------解决方案--------------------
是什么数据库?如果是Oracle的话我倒是会写PL/SQL
------解决方案--------------------
先在程序里生成这100个不重复的号码,一次性插入好了,反正你是拿来测试用的
------解决方案--------------------
用java程序生成,然后一次性插入即可
------解决方案--------------------
随机码。。恩~原理可以参考吓验证码数字生成
------解决方案--------------------
好像不用非要随机才行吧,只要一个FOR循环,STEP 个50或100的,就可以了。
------解决方案--------------------
可以肯定这100个手机号码不是连续的,有间断,
首先把这100个号码读入到内存中,再转入到list中,通过循环,在循环中通过Statement的对象的addBatch方法一并加入,再execteBatch就行了,事务肯定要加咯
------解决方案--------------------
http://community.csdn.net/IndexPage/SmartQuestion.aspx#bespecific
------解决方案--------------------
很难吗?怎么上来就要代码
------解决方案--------------------
写一循环,让其按照顺序查入到数据库中,从数据库取的时候按照newid().
------解决方案--------------------
就是随机产生5位数嘛
------解决方案--------------------
随机产生数,放入集合中(hashset防止重复),然后遍历集合把它们插入到数据库
------解决方案--------------------
随机生成1到99999的100个不重复整数,然后从13901000000到13991099999进行循环,选出对应的号码插入数据库即可
------解决方案--------------------
写了一段代码供参考:

package net.oicp.sunflowerbbs;

import java.util.Random;
public class GenRandomNums {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] array=new int[100000];
for(int i=0;i <array.length;i++)
array[i]=i+1;
Random rnd = new Random();
for(int i=0;i <array.length/2;i++)
{
int randnum=rnd.nextInt(100000);
int tmp=array[randnum];
array[randnum]=array[99999-randnum];
array[99999-randnum]=tmp;
}
//从任意位置连续取100个数即可
for(int j=0;j <100;j++)
System.out.println(String.format( "13901%05d ", array[j]));
}

}
------解决方案--------------------
不如 全部插入 随机查出100个 select * from

(
select * from 表名
order by dbms_random.value

)
where rownum <= 100
;