[英]JDBC parsing int from SQL query
我對使用Java編程非常陌生,並且遇到了一些困難。 我已經四處搜尋,但無法獲得確切答案。
基本上,我創建了一個3層應用程序,該應用程序使用服務器上運行的servlet來使用JDBC訪問mySQL數據庫。
在大多數情況下,我的應用程序運行良好。 我能夠運行查詢並顯示結果。
問題是,我需要根據查詢(字符串)實現一些邏輯。
例如,
ex1_query: insert into parts values ('S5', 'P6', 'J7', 50);
ex2_query: insert into parts values ('S5', 'P6', 'J7', 400);
我的查詢是通過HTML表單作為單個字符串提交的。 如您所見,ex1_query和ex2_query之間的唯一區別是它們的最后一個值(50和400)。
邏輯是,如果最后一個值> = 100,則需要實現一些東西…
如果該值小於100,則只需按照指定的條件運行查詢。
我的查詢將始終以該格式輸入,但最后一個值可能在0-1000之間變化。
所以我的問題是……我怎樣才能僅解析字符串中的最后一個int? 因此,我可以確定是否應該實施某些特定的邏輯?
我知道這聽起來很簡單,但是我遇到了一些麻煩。 任何幫助或指導,將不勝感激。 謝謝
用戶准備的聲明
String param1= "S5";
String param2= "p6";
String param3= "j7";
int param4= 50 0r 400 ;
public void someMethod(String param1,String param2,String param3,String param4){
if(param4 >= 100){
//your stuff
param4 = ; //your new value;
}
query = insert into parts values (?, ?, ?,?);
並執行查詢
如果您對查詢沒有任何控制權,則可能希望與java.util.regex成為朋友並進行如下分析:
"^\s*insert\s+into\s+([A-Za-z0-9]+)\s+values\s+\(\s*('\w+'\s*,\s*){3}([0-9]+)\)\s*$"
這實際上是老式的grep regex,但是java.util.regex可以使用具有相同功能的regex。 它檢查字符串是否遵循您的模式。 子匹配項#1應該為您提供表格名稱。 submatch#2-#4應該為您提供值1-3,submatch#5包含您要查找的數字(當然是字符串)。 拒絕您不喜歡的查詢的一種好方法。
但是,如果您不想使用Preparedstatement
那么這是另一個選擇
String ex1_query = "insert into parts values ('S5', 'P6', 'J7', 50);";
String lastValue = ex1_query.substring( ex1_query.lastIndexOf(",")+1, ex1_query.lastIndexOf(")")).trim();
Integer lastNumber = null;
try {
lastNumber = Integer.parseInt(lastValue);
} catch (NumberFormatException e) {
// if last value is not int then handle here
e.printStackTrace();
}
if(lastNumber >=100){
}
在lastValue中,您可以獲得50/400或任何值並執行您的任務
如果您的查詢除該integer
數值外將保持不變,則可以使用substring
。
String query = "insert into parts values ('S5', 'P6', 'J7', 50);"
int value = Integer.parseInt(query.substring(43, query.length()-2));
或者,您可以使用正則表達式來完成此操作。
String query = "insert into parts values ('S5', 'P6', 'J7', 50);";
Pattern pattern = Pattern.compile("(?<=(.+,\\s?))(\\d+)(?=(\\);))");
int value = Integer.parseInt(pattern.matcher(query).group());
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.