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();}
}
}