⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 db.java

📁 DB_HELPER,是本人编写的一个学习database的小工具
💻 JAVA
字号:
/**
 * 实现数据库的操作,维护 
 */
 import java.sql.*;
 import java.math.*;

/**
 * @author Jimmy
 * 对KFC至少随机生成800个连锁店信息;
 * 对KFC至少随机生成10万个顾客信息;
 * 对KFC至少随机生成200万条订单记录,每张订单随机生成多条订单项记
 * 
 */
 
public class DB {
	 
	// all cities info
	public static String china_city[][]={
		{"BEIJING","北京市","北京市","华北"},{"SHANGHAI","上海市","上海市","华东"},
		{"TIANJIN","天津市","天津市","华北"},{"HEFEI","合肥市","安徽省","华东"},
		{"CHONGQIN","重庆市","重庆市","西南"},{"FUZHOU","福州市","福建省","华东"},
		{"XIAMEN","厦门市","福建省","华东"},{"DONGWAN","东莞市","广东省","中南"},
		{"GUANGZHOU","广州市","广东省","中南"},{"SHENZHEN","深圳市","广东省","中南"},
		{"ZHUHAI","珠海市","广东省","中南"},{"SHIJIAZHUANG","石家庄市","河北省","华北"},
		{"HAERBIN","哈尔滨市","黑龙江省","东北"},{"ZHENGZHOU","郑州市","河南省","华北"},
		{"WUHAN","武汉市","湖北省","中南"},{"CHANGSHA","长沙市","湖南省","中南"},
		{"NANJING","南京市","江苏省","华东"},{"NANCHANG","南昌市","江西省","中南"},
		{"CHANGCHUN","长春市","吉林省","东北"},{"SHENYANG","沈阳市","辽宁省","东北"},
		{"DALIAN","大连市","辽宁省","东北"},{"JINAN","济南市","山东省","华北"},
		{"QINGDAO","青岛市","山东省","华北"},{"TAIYUAN","太原市","山西省","华北"},
		{"XIAN","西安市","陕西省","西北"},{"CHENGDU","成都市","四川省","西南"},
		{"KUNMING","昆明市","云南省","西南"},{"HANGZHOU","杭州市","浙江省","华东"},
		{"NINGBO","宁波市","浙江省","华东"},{"CHANGZHOU","常州市","江苏省","华东"},
		{"SUZHOU","苏州市","江苏省","华东"},{"WUXI","无锡市","江苏省","华东"}
	};
	// char a-z A-Z
	public static String str[]={
		"A","B","C","D","E","F","G","H","I","J","K","L",
		"M","N","O","P","Q","R","S","T","U","V","W","X",
		"Y","Z","a","b","c","d","e","f","g","h","i","j",
		"k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"};
	// number 0-9
	public static char num[]={'0','1','2','3','4','5','6','7','8','9'};
	
	// occupation
	public static String occupation[]={"军人","教师","学生","教授","工人","农民","经理","董事长","顾问","组长","社长","音乐人","记者","公务员"};
	
	// food list
	public static String food[]={
		"K0001","K0002","K0003","K0004","K0005","K0006","K0007","K0008","K0009","K0010",
		"K0011","K0012","K0013","K0014","K0015","K0016","K0017","K0018","K0019","K0020",
		"K0021","K0022","K0023","K0024","K0025"};
	/*
	 * 插入城市信息 KFC_CHINACITY
	 * CITYNO CHAR(20) PRIMARY KEY,	城市编号
	 * CITYNAME CHAR(20) NOT NULL,	城市名称
	 * PROVINCE CHAR(10) NOT NULL,	所在省份
	 * CHINAAREA CHAR(10) NOT NULL	所属区域
	 */
	public void insert_city_info()
	{
	   try
	   {
           // 1.get connection
		   Connection conn = get_conn("oradb","ZYP","ZYP");
		    
		   //2.generate information 
		   String sql = "INSERT INTO KFC_CHINACITY (CITYNO,CITYNAME,PROVINCE,CHINAAREA) VALUES(?,?,?,?)";	   
		   PreparedStatement stmt = conn.prepareStatement(sql);
		   for(int i=0;i<32;i++)
		   {
		     stmt.setString(1,china_city[i][0]);
		     stmt.setString(2,china_city[i][1]);
		     stmt.setString(3,china_city[i][2]);
		     stmt.setString(4,china_city[i][3]);
		     stmt.addBatch();
		   }
        	//3.execute insert
		   stmt.executeBatch();
        	//4. close connection  
		   conn.close();
	   }
	   catch(Exception e)
	   {
		   System.out.printf("insert fail e : "+e);
		   
	   }
	}
	
	 /* 
	  * 对KFC至少随机生成800个连锁店信息
	  *    KFC_CHAINSTORELIST   连锁店列表
	  * STORENO NUMBER(5) PRIMARY KEY,	连锁店编号
	  * STORENAME CHAR(20) NOT NULL,	连锁店名称
	  * LOCATEDCITY CHAR(20) NOT NULL 
	  * CONSTRAINT LOCATEDCITY_FK 
	  * REFERENCES KFC_CHINACITY(CITYNO)	所在城市,外键引用
	  */
	 
	public void insert_store_info()
	{
		try
		{
			//1.get connection
			Connection conn = get_conn("oradb","ZYP","ZYP");
			
			//2.generate random information 
			String sql = "INSERT INTO KFC_CHAINSTORELIST (STORENO,STORENAME,LOCATEDCITY) VALUES(?,?,?)";	   
			   PreparedStatement stmt = conn.prepareStatement(sql);
			   for(int i=0;i<800;i++)
			   {
			     stmt.setInt(1,i);
			     stmt.setString(2,get_random_str(20));
			     stmt.setString(3,china_city[(int)(Math.random()*32)][0]);
			     stmt.addBatch();
			   }
	        	//3.execute insert
			     stmt.executeBatch();
			    //4.close connection
	             conn.close();
		}
		catch(Exception e)
		{
			System.out.printf("insert fail e : "+e);
		}
		
		return;
	}
	
	/*
	 *  对KFC至少随机生成10万个顾客信息
	 *  KFC_CUSTOMERLIST	顾客列表
     *
	 * CUSTOMERNO NUMBER(8) PRIMARY KEY,	顾客编号
	 * CUSTOMERNAME VARCHAR2(20) NOT NULL,	顾客姓名
	 * IDCARDNO CHAR(20),					身份证号
	 * SEX CHAR(2),                         性别
	 * AGE SMALLINT,                        年龄
	 * OCCUPATION VARCHAR2(40)              职位
	 */
	
	 
	public void insert_customer_info()
	{
		String sql = "INSERT INTO KFC_CUSTOMERLIST (CUSTOMERNO,CUSTOMERNAME,IDCARDNO,SEX,AGE,OCCUPATION) VALUES(?,?,?,?,?,?)";
		try
		{
			//1.get connection
			Connection conn = get_conn("oradb","ZYP","ZYP");
			
			//2.generate random information 				   
			PreparedStatement stmt = conn.prepareStatement(sql);
			   for(int i=0;i<100000;i++)
			   {
			     stmt.setInt(1,i);
			     stmt.setString(2,get_random_str(20));
			     stmt.setString(3,(i+100000000)+"");
			     stmt.setString(4,Math.random()>0.5?"F":"M");
			     stmt.setInt(5,(int)(Math.random()*90)+10);
			     stmt.setString(6,occupation[(int)(Math.random()*14)]);		     
			     stmt.addBatch();
			   }
	        	//3.execute insert
			     stmt.executeBatch();
			    //4.close connection
	             conn.close();
		}
		catch(Exception e)
		{
			System.out.printf(sql);
			System.out.printf("insert fail e : "+e);
			
		}
		
		return;
	}
	
	/*
	 * 对KFC至少随机生成200万条订单记录,每张订单随机生成多条订单项记
	 * 
	 *   TABLE KFC_ORDER	订单
     *
	 * ORDERNO NUMBER(10) PRIMARY KEY,	订单编号
	 * ORDERDATE DATE NOT NULL,			开单日期
	 * STORENO NUMBER(5) NOT NULL CONSTRAINT STORENO_FK
     * REFERENCES KFC_CHAINSTORELIST(STORENO),	连锁店编号
	 * CUSTOMERNO NUMBER(8) NOT NULL CONSTRAINT CUSTOMERNO_FK
	 *	REFERENCES KFC_CUSTOMERLIST(CUSTOMERNO),	顾客编号
	 * ORDERTYPE CHAR(10)								订单类型
	 * 
	
	 */
	 
	public void insert_order_info()
	{
		String sql = "INSERT INTO KFC_ORDER (ORDERNO,ORDERDATE,STORENO,CUSTOMERNO,ORDERTYPE) VALUES(?,?,?,?,?)";
		try
		{
			//1.get connection
			Connection conn = get_conn("oradb","ZYP","ZYP");
			
			//2.generate random information 				   
			PreparedStatement stmt = conn.prepareStatement(sql);
			   for(int i=0;i<2000000;i++)
			   {
			     stmt.setInt(1,i);
			     
			     java.util.Date current_time = new java.util.Date();
				 Timestamp ts = new Timestamp(current_time.getTime());
				 ts.setNanos(0);
			     stmt.setTimestamp(2,ts);
			     stmt.setInt(3,(int)(Math.random()*800));
			     stmt.setInt(4,(int)(Math.random()*100000));	 
			     stmt.setString(5,Math.random()>0.5?"堂吃":"外卖");		     
			     stmt.addBatch();
			     if(i%10000==0)
			     {
                 	//3.execute insert
				     stmt.executeBatch();
				     stmt.clearBatch();
			     }
			   }	
			     stmt.executeBatch();
			     stmt.clearBatch();
			    //4.close connection
	             conn.close();
		}
		catch(Exception e)
		{
			System.out.printf(sql);
			System.out.printf("insert fail e : "+e);
			
		}
		
		return;
	}
	/*
	 *     KFC_ORDERITEMS	订单项表
     *
	 * ITEMNO NUMBER(12) PRIMARY KEY,	订单项编号
	 * ORDERNO NUMBER(10) NOT NULL CONSTRAINT ORDERNO_FK
	 *	REFERENCES KFC_ORDER(ORDERNO),	订单编号
	 * FOODNO CHAR(8) NOT NULL CONSTRAINT FOODNO_FK
     * REFERENCES KFC_FOODLIST(FOODNO), 		食品编号
	 * ORDEREDNUMBER NUMBER(6) DEFAULT(1)	购买数量
	 *  
	 */
	
	public void insert_orderItem_info()
	{
		String sql = "INSERT INTO KFC_ORDERITEMS (ITEMNO,ORDERNO,FOODNO,ORDEREDNUMBER) VALUES(?,?,?,?)";
		try
		{
			//1.get connection
			Connection conn = get_conn("oradb","ZYP","ZYP");
			
			//2.generate random information 				   
			PreparedStatement stmt = conn.prepareStatement(sql);
			
			int j = 0;
			
			   for(int i=0;i<1900000;i++)
			   {
				  
			     int count = (int)(Math.random()*5);
			     for(int k=0;k<count;k++)
			     {
			    	 stmt.setInt(1,j);
			    	 stmt.setInt(2,i);
			    	 stmt.setString(3,food[(int)(Math.random()*25)]);
			    	 stmt.setInt(4,count);
			    	 stmt.addBatch();
			    	 j++;
			    	
			     }
			
			     if(i%10000==0)
			     {
                 	//3.execute insert
				     stmt.executeBatch();
				     stmt.clearBatch();
			     }
			   }	
			     stmt.executeBatch();
			     stmt.clearBatch();
			    //4.close connection
	             conn.close();
		}
		catch(Exception e)
		{
			System.out.printf(sql);
			System.out.printf("insert fail e : "+e);
			
		}
		
		return;
	}
	
	
	
	/*
	 *  help function get the connection to oracle 
	 * 
	 */
	 
	 
	public Connection get_conn(String SID,String userName,String password)
	{
		Connection conn = null;
		  try
	        {
	        	Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
	    		String url="jdbc:oracle:thin:@localhost:1521:"+SID;
	    		conn= DriverManager.getConnection(url,userName,password);
	            System.out.printf(" CONNECT TO ORACLE SUCCESS!");
	        }
	        catch(Exception e)
	        {
	        	System.out.printf("connect fail e : "+e);
	        }	        
	        return conn;
	}
	  /*
	   * get data from access file 
	   */
	 public void convert_city()
	 {
		    String china_city [][]=new String [32][4];
		    String temp="";
		    int i=0;
	        Connection con;
	        Statement stmt;
	        try {
	            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
	     
	            String url = "jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=F:\\DB\\DB_Helper\\DB_HELPER\\MCD.mdb";
	            con = DriverManager.getConnection(url, "", "");
	            stmt = con.createStatement();
	            String query = "select *  from MCD_CHINACITY";
	            ResultSet rs = stmt.executeQuery(query);
	            while (rs.next()&&i<32) {
	               china_city[i][0]=rs.getString("CITYNO").trim();
	               china_city[i][1]=rs.getString("CITYNAME").trim();
	               china_city[i][2]=rs.getString("PROVINCE").trim();
	               china_city[i][3]=rs.getString("CHINAAREA").trim();
	               temp="{\""+china_city[i][0]+"\",\""+china_city[i][1]+"\",\""+china_city[i][2]+"\",\""+china_city[i][3]+"\"},";  
	               System.out.print(temp);
	               i++;
	            }
	          
	           con.close();
	        } catch (Exception e) {
	            e.printStackTrace();
	        }
	    }
	 
	 /*
	   * get food data from access file
	   *     MCD_FOODLIST 食品列表
       *
       * FOODNO CHAR(8) PRIMARY KEY, 		食品编号
       * FOODNAME VARCHAR2(40) NOT NULL,	食品名称
       * FOODDESCRIPTION VARCHAR2(400),		食品描述
       * DELIVERYDATE DATE,					推出时间
       * SPEC CHAR(4) NOT NULL,				食品规格
       * PRICE NUMBER(6,2) NOT NULL			食品单价
	   */
	 public void convert_food()
	 {
//		    
			
		   
	        Connection con = null;
	        ResultSet rs = null;
	        Statement stmt;
	        try {
	            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
	     
	            String url = "jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=F:\\DB\\DB_Helper\\DB_HELPER\\MCD.mdb";
	            con = DriverManager.getConnection(url, "", "");
	            stmt = con.createStatement();
	            String query = "select *  from MCD_FOODLIST";
	            rs = stmt.executeQuery(query);
	            
	            //1.get connection
				Connection conn = get_conn("oradb","ZYP","ZYP");
				
				String sql = "INSERT INTO KFC_FOODLIST (FOODNO,FOODNAME,FOODDESCRIPTION,DELIVERYDATE,SPEC,PRICE) VALUES(?,?,?,?,?,?)";
				//2.generate random information 				   
	            PreparedStatement mystmt = conn.prepareStatement(sql);
	            
	            while(rs.next())
		        {
	            	mystmt.setString(1,rs.getString("FOODNO"));
	            	mystmt.setString(2,rs.getString("FOODNAME"));
	            	mystmt.setString(3,rs.getString("FOODDESCRIPTION"));
	            	mystmt.setDate(4,rs.getDate("DELIVERYDATE"));
	            	mystmt.setString(5,rs.getString("SPEC"));
	            	mystmt.setFloat(6,rs.getFloat("PRICE"));		     
	            	mystmt.addBatch();   	
		        }          
	            mystmt.executeBatch();
	            con.close();
	            conn.close();
	        } catch (Exception e) {
	            e.printStackTrace();
	        }
	    }
	 /*
	  * get a random str which constructed with a-z A-Z
	  * @strlen the max length of the string 
	  * @return return the random str 
	  */
	  public String get_random_str(int strlen)
	  {
		  String result="";
		  strlen = strlen - 5;
		  int count =(int)(Math.random()*strlen) + 5;
		  for(int i=0;i<count;i++)
		  {
			  int pos = (int)(Math.random()* 52);
			  result += str[pos];
		  }
		  return result;		 
	  }
	 
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -