2012-02-02 30 views
-2

我打开关于抽取数据并插入数据库的新问题。我改变和修改代码变成这样,但仍然无法正常工作。从平面文件中获取数据并将数据插入到Java数据库中

平面文件:

DT|00000001|TMDWH|UNIFI|00380520160|MAH SIEW YIN|11 |JALAN PP 2/8|TAMAN PUTRA PRIMA|PUCHONG|SELANGOR|47100|MALAYSIA|801110-14-5498||||||VOBB||A||11|JALAN PP 2/8|||TAMAN PUTRA PRIMA 

DT|00000002|TMDWH|UNIFI|00322012091|JUNITA BINTI JAMAL|6 10 KONDOMINIUM FAJARIA|JALAN PANTAI BARU|KUALA LUMPUR|KUALA LUMPUR|WILAYAH PERSEKUTUAN|59200|MALAYSIA|800129-09-5078||||||VOBB||A|||JALAN PANTAI BARU|6|KONDOMINIUM FAJARIA|KUALA LUMPUR  

计划:

public void massageData(String tmp) { 
    String[] fields = tmp.replace("\"", " ") 
         .replace("\'","\'\'") 
         .trim() 
         .split("\\s*\\|\\s*"); 

Connection conn = null; 
ResultSet rs = null; 
PreparedStatement stmt = null; 

String actualMSISDN = parseMSISDN(fields[5]); 

    if (actualMSISDN.length() > 8) { 
     String [] aNo = getAreaCode(actualMSISDN).split("\\|"); 
     field[0] = getiCtr(parseMSISDN(fields[5])); 

     String stateCode = lookupStateCode(State); 
     String sQuery = "insert into DATA_999 (,RecordType,RecordNumber,SourceSystemApplicationId,TargetApplicationId,TelNo,Name,HouseNo,StreetName,AppartmentSuite,TownCity,State,PostalCode,Country,NewIC,OldIC,PassportNo,BRN,LatitudeDecimal,LongitudeDecimal,ServiceType,IndicatorType,CreateDate,Filler,Cr_Nl,HouseNo_New,LotNo_New,StreetName_New,AptNo_New,BuildingName_New,LowIDRange,HighIDRange,SectionName) values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"; 
     try { 
      conn = ds.getConnection(); 
      stmt = conn.prepareStatement(sQuery); 

      int col = 0; 
      for (String field : fields) { 
       stmt.setString(++col, field); // Note: SQL API is 1-based (not zero-based) 
      } 

      int dbStat = stmt.executeUpdate(); 
      conn.close(); 
     } catch (SQLException s){ 
      logger.error(s.getMessage()); 
     } 
     finally { 
      try {if (stmt != null) stmt.close();} catch (SQLException e) {} 
      try {if (conn != null) conn.close();} catch (SQLException e) {} 
     } 
    } 
} 
+0

您能否在您的问题中描述每个行的字段如何映射到数据库表中的列? – 2012-02-02 09:14:16

+1

你能发送抛出的异常吗? 'DATA_999'表的DDL也很受欢迎。 – frm 2012-02-02 09:18:54

+1

请阅读FAQ http://stackoverflow.com/faq – 2012-02-02 09:30:47

回答

2

你实际上是在试图插入1行字段的两倍。你的sql查询似乎也有错误:第一个字段不存在,只有一个逗号。

在我看来,你自己并没有做任何事情:你使用人们给你的建议,改变你的代码,如果它不起作用,你创建一个新的问题。

+0

亲爱的库尔特杜波伊斯,我已经改变它,但仍然无法工作..再说一个主意? – Siti 2012-02-02 09:47:26

相关问题