簡體   English   中英

JDBC從SQL查詢中解析int

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM