2013-12-15 159 views
0

这是输出IM recieving:的Java SQL删除括号

INSERT INTO [ J] VALUES ([J1, Sorter, Paris) 
INSERT INTO [ J] VALUES (J2, Punch, Rome) 
INSERT INTO [ J] VALUES (J3, Reader, Athens) 
INSERT INTO [ J] VALUES (J4, Console, Athens) 
INSERT INTO [ J] VALUES (J5, Collator, London) 
INSERT INTO [ J] VALUES (J6, Termninal, Oslo) 
INSERT INTO [ J] VALUES (J7, Tape, London]) 

正如你可以看到我有一个[开头和]在最后,我不知道是什么原因造成的呢?我如何删除它?我试过用.replace(“[]”,“”)正则表达式。我相信这个问题正在发生,但无济于事。

代码插入:

if (state == 3||!tableLineScanner.hasNextLine()){ 
         try{ 
          Class.forName("org.sqlite.JDBC"); 
          Connection conn = null; 
          conn = DriverManager.getConnection("jdbc:sqlite:test.db"); 
          //TODO Input values goes here 
          tableName =""+tableNames; 
          Statement stmt = conn.createStatement(); 
          String query = tableValues + ""; 
          ResultSet rs = stmt.executeQuery("SELECT * FROM "+ tableName); 
          ResultSetMetaData rsmd = rs.getMetaData(); 
          query.replaceAll("[ ]",""); 
          tableName =""+tableNames; 
          tableName.replaceAll("[ ]",""); 
          String[] splittedOutput = query.split(", "); 
          int valuesOnLine = rsmd.getColumnCount(); 
          for (int i = 0; i < splittedOutput.length; i++) { 
           if (i % valuesOnLine == 0) { 
            System.out.print("INSERT INTO " + tableName + " VALUES ("); 
           } 
           System.out.print(splittedOutput[i]); 
           if (i % valuesOnLine == valuesOnLine - 1) { 
            System.out.println(")"); 
           } else { 
            System.out.print(", "); 
           } 
          } 
          tableNames.clear(); 
          tableValues.clear(); 
          tableFields.clear(); 
         } 
         catch (SQLException ex){ 
          System.out.println("SQLException: " + ex.getMessage()); 
          System.out.println("VendorError: " + ex.getErrorCode()); 
         } 
         catch (ClassNotFoundException e){ 
          e.printStackTrace(); 
         } 
        } 

回答

1

你会得到更多的问题,如果你在tableNames有一个以上的元素。你打算只使用第一个表名吗?或者使用它们遍历tableNames?现在,您将tableNames转换为[element1, element2, element3]这种形式的字符串,这几乎肯定不是您想要的。

如果您确实想删除[]字符,您需要编写类似replaceAll("[\\[\\]]", "")的字符,因为[]是正则表达式中的特殊字符。

+0

林具有部件1,element2的,元素3的数组,但我似乎无法摆脱的[]即使你的replaceAll代码 – Looptech

+0

我不认为你有一个数组。你有一个'List'或者'Set'的某种类型。如果它是一个列表,我建议调用'get(0)'来获得你想要的值。 –

+0

nvm我解决了它谢谢你! – Looptech

0

通过配置splittedOutput这个删除括号使用的解决方案:

System.out.print(splittedOutput[i].replaceAll("[\\[\\]]", ""));