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