我有下面的代碼分裂了sql語句並給出了列的索引。在java中解析sql需要幫助
String sql = "INSERT INTO Table1(SSN, EMPID) VALUES (?,?)";
public static List<Object[]> indices(String stmt) {
List<Object[]> list = new ArrayList<Object[]>();
String variables[] = null;
try {
variables = stmt.substring(stmt.indexOf('(')+1,
stmt.indexOf(')', stmt.indexOf('(')+1)).split("\\,");
} catch (Exception e) {}
for (int i=0; i < variables.length; ++i) {
Object [] str = new Object [2] ;
str[0] = variables[i].trim() ;
str[1] = ((Integer)(i+1)) ;
list.add(str) ;
}
return list;
}
Result -
list[0] >>
array[0] = SSN
array[1] = 1
list [1] >>
array[0] = EMPID
array[1] = 2
有人點我可以用適當的正則表達式來拆分以下SQL代替 -
sql = "if not exists (select * from Table1 where SSN = ? and EMPID =?)
INSERT INTO Table1(SSN, EMPID) VALUES (?,?)"
我猜的輸出會是這樣的 -
list[0] >>
array[0] = SSN
array[1] = 1
list [1] >>
array[0] = EMPID
array[1] = 2
list[2] >>
array[0] = SSN
array[1] = 1
list [3] >>
array[0] = EMPID
array[1] = 2
謝謝
我有一個應用程序取決於框架,不想引入新的庫! – jagamot 2010-02-05 22:38:25
我想你錯過了我的觀點...... PLZ看看需要從第二個SQL產生的輸出。它將是一個包含4個對象的列表。 – jagamot 2010-02-06 04:43:52
那麼Zql能給我參數列名嗎? [如我的問題所示] – jagamot 2010-02-10 13:27:59