阿郎的技术搏客

成长轨迹

根据手机查询归属地的批处理程序

import java.sql.*;
import java.io.*;
import java.util.logging.Logger;
class Mobile_area
{
 public static void main(String[] args)
 {
     try
  {
  String address = "jdbc:odbc:mobile_area";
   //驱动类型+目标数据库ip+数据库端口
  
  try {
     Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
     System.out.println("已经成功连接手机归属地数据库。");}
  catch (ClassNotFoundException cnfe) {
     System.out.println("连接手机归属地数据库失败!请参考‘readme.txt’文件的描述进行配置!");}
  String user="sa";//数据库用户密码
  String passwd="";//口令
  String database = "mobilezip";//目标数据库
  Logger log = Logger.getLogger("Mobile_area");
  //if (log==null) log= Logger("Mobile_area","mobile_area.log");
  Connection con = DriverManager.getConnection(address,user,passwd);//建立链接
  con.setCatalog(database);//确定目标数据库
  Statement smt =con.createStatement();
  Statement insert_smt =con.createStatement();
  Statement insert_smt_pre =con.createStatement();

  String selCode = "";//查询语句
  String import_file="mobile.txt";
  String mobile_pre="";
  String mobile_area="";
  String city="";
  String privince="";
  String mobile_num;
  ResultSet res,rs;

  System.out.println("提示:您需要处理的文件必须放在应用程序所在的目录中,否则无法处理");
  System.out.println("      进度状态的含义: '.'代表当前的手机号码已经处理过;'0'代表成功查找并插入该手机号码的归属地信息;'x'代表处理失败");
  System.out.println("请您输入需要处理的文件名称:");
     DataInputStream inputFilename =
      new DataInputStream(
        new BufferedInputStream(System.in));
     try {
  String tmp="";
        if((tmp = inputFilename.readLine()).length()>0) import_file =tmp ;
        System.out.println("您需要处理的文件名为:"+import_file+",处理即将进行......");
     } catch(IOException e) {
        System.out.println("您输入的文件异常!请检查您指定的文件是否当前的目录存在。");
     }
 
  System.out.println("如您没有输入需要处理的文件,默认的处理文件名称为:"+import_file);

     DataInputStream in =
        new DataInputStream(
          new BufferedInputStream(
            new FileInputStream(import_file)));
      String s, s2 = new String();

   System.out.println("|手机号码\t|手机区段\t|手机区号\t|城市\t|省市|");//输出此条记录的查询结果
   int i=0;
   String insert_sql="";
      while((s = in.readLine())!= null)
    {  
     mobile_num=s;
     if(s==null) s="";
     if(s.length()>10)
       s=s.substring(0,7);
     else
    s="88888888888";
        selCode="SELECT Mobile_area.mobile, Mobile_area.zip, Mobile_area.city, Mobile_area.state FROM Mobile_area WHERE ((Mobile_area.mobile)="+ s +")";
           //System.out.println(selCode);
     res = smt.executeQuery(selCode);//结果集
           if(res.next())
          {    //从第一条往后依次取结果集中的记录

                mobile_pre =  res.getString(1);//等同rs.getString("userId"),即第一个字段数据
                mobile_area = res.getString(2);//同上,第二个字段,全部取其为String类型
                city =  res.getString(3);//等同rs.getString("userId"),即第一个字段数据
                privince = res.getString(4);//同上,第二个字段,全部取其为String类型
                //若是中文字段,一般需要转码
                //userName = new String(userName.getBytes("ISO-8859-1"),"gb2312");
                if(i<=100)
                System.out.println("|"+mobile_num+"\t|"+mobile_pre+"\t|"+mobile_area+"\t|"+city+"\t|"+privince+"|");//输出此条记录的查询结果
    //log.info("|"+mobile_num+"\t|"+mobile_pre+"\t|"+mobile_area+"\t|"+city+"\t|"+privince+"|") ;

    String insert_sql_pre="select count(mobile_num)  from mobile_area_insert where mobile_num='"+mobile_num+"'";
                rs=insert_smt_pre.executeQuery(insert_sql_pre);
    int rcount=0;
    if(rs.next()){
                 rcount=rs.getInt(1);}
                rs.close();//释放资源
    if(rcount==0)
    {
    insert_sql="insert into mobile_area_insert(mobile_num,mobile,zip,city,state) values('"+mobile_num+"','"+mobile_pre+"','"+mobile_area+"','"+city+"','"+privince+"')";
                int j=insert_smt_pre.executeUpdate(insert_sql);
    if(i>100)
     {
      if(j>0) System.out.print("0");
      else System.out.print("x");
      if(i%50==0) System.out.println(i);
     }
    }
    else
    {        if(i>100){
          System.out.print(".");
       if(i%50==0) System.out.println(i); }
    }
    i++;
             }
    res.close();//释放资源
       }
    
  System.out.println("\t" + i +"行已经处理!"); System.out.println("=========================end=========================");//输出此条记录的查询结果
   in.close();
   smt.close();
   insert_smt.close();
   insert_smt_pre.close();
   con.close();
  }
  catch (Exception e)
  {e.printStackTrace();}
 }
}

posted on 2007-05-11 18:02 alone 阅读(737) 评论(1)  编辑  收藏

Feedback

# re: 根据手机查询归属地的批处理程序 2007-07-06 16:34 ijat

gfhgfhgh  回复  更多评论   



只有注册用户登录后才能发表评论。


网站导航: