「java解析sql字段」java sql解析框架

博主:adminadmin 2022-12-01 20:57:09 139

本篇文章给大家谈谈java解析sql字段,以及java sql解析框架对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

java将json数据解析为sql语句?

import java.util.Iterator;

import java.util.Set;

import java.util.Map.Entry;

import com.google.gson.JsonArray;

import com.google.gson.JsonElement;

import com.google.gson.JsonObject;

import com.google.gson.JsonParser;

public class Sql

{

public static String parseSQL(String json)

{

JsonParser parser = new JsonParser();

JsonObject obj = (JsonObject) parser.parse(json);;

String table = obj.get("table").getAsString();

String op_type = obj.get("op_type").getAsString();

String sql = "";

if("I".equals(op_type))

{

sql += "INSERT INTO " + table + " (";

JsonObject after = (JsonObject) obj.get("after");

SetEntryString, JsonElement entry = after.entrySet();

IteratorEntryString, JsonElement it = entry.iterator();

String vs = " values (";

while(it.hasNext())

{

EntryString, JsonElement elem = it.next();

String key = elem.getKey();

String val = elem.getValue().toString();

sql += key + ", ";

vs += val + ", ";

}

sql = sql.replaceAll(",\\s*$", "");

vs = vs.replaceAll(",\\s*$", "");

sql += ") " + vs + ")";

}

else if("U".equals(op_type))

{

sql += "UPDATE " + table + " SET ";

JsonObject after = (JsonObject) obj.get("after");

SetEntryString, JsonElement entry = after.entrySet();

IteratorEntryString, JsonElement it = entry.iterator();

while(it.hasNext())

{

EntryString, JsonElement elem = it.next();

String key = elem.getKey();

String val = elem.getValue().toString();

sql += key + "=" + val + ", ";

}

sql = sql.replaceAll(",\\s*$", "");

sql += " WHERE ";

after = (JsonObject) obj.get("before");

entry = after.entrySet();

it = entry.iterator();

while(it.hasNext())

{

EntryString, JsonElement elem = it.next();

String key = elem.getKey();

String val = elem.getValue().toString();

sql += key + "=" + val + " AND ";

}

sql = sql.replaceAll("\\s*AND\\s*$", "");

}

else if("D".equals(op_type))

{

sql += "DELETE FROM " + table + " WHERE ";

JsonObject after = (JsonObject) obj.get("before");

SetEntryString, JsonElement entry = after.entrySet();

IteratorEntryString, JsonElement it = entry.iterator();

while(it.hasNext())

{

EntryString, JsonElement elem = it.next();

String key = elem.getKey();

String val = elem.getValue().toString();

sql += key + "=" + val + " AND ";

}

sql = sql.replaceAll("\\s*AND\\s*$", "");

}

return sql;

}

public static void main(String[] args)

{

String insert =

        "{\"table\":\"GG.TCUSTORD\",\"op_type\":\"I\",\"op_ts\":\"2013-06-02 22:14:36.000000\",\"current_ts\":\"2015-09-18T13:39:35.447000\",\"pos\":\"00000000000000001444\",\"tokens\":{\"R\":\"AADPkvAAEAAEqL2AAA\"},\"after\":{\"CUST_CODE\":\"WILL\",\"ORDER_DATE\":\"1994-09-30:15:33:00\",\"PRODUCT_CODE\":\"CAR\",\"ORDER_ID\":\"144\",\"PRODUCT_PRICE\":17520.00,\"PRODUCT_AMOUNT\":3,\"TRANSACTION_ID\":\"100\"}}";

String update =

        "{\"table\":\"GG.TCUSTORD\",\"op_type\":\"U\",\"op_ts\":\"2013-06-02 22:14:41.000000\",\"current_ts\":\"2015-09-18T13:39:35.748000\",\"pos\":\"00000000000000002891\",\"tokens\":{\"L\":\"206080450\",\"6\":\"9.0.80330\",\"R\":\"AADPkvAAEAAEqLzAAC\"},\"before\":{\"CUST_CODE\":\"BILL\",\"ORDER_DATE\":\"1995-12-31:15:00:00\",\"PRODUCT_CODE\":\"CAR\",\"ORDER_ID\":\"765\",\"PRODUCT_PRICE\":15000.00,\"PRODUCT_AMOUNT\":3,\"TRANSACTION_ID\":\"100\"},\"after\":{\"CUST_CODE\":\"BILL\",\"ORDER_DATE\":\"1995-12-31:15:00:00\",\"PRODUCT_CODE\":\"CAR\",\"ORDER_ID\":\"765\",\"PRODUCT_PRICE\":14000.00,\"PRODUCT_AMOUNT\":3,\"TRANSCATION_ID\":\"100\"}}";

String delete =

        "{\"table\":\"GG.TCUSTORD\",\"op_type\":\"D\",\"op_ts\":\"2013-06-02 22:14:41.000000\",\"current_ts\":\"2015-09-18T13:39:35.766000\",\"pos\":\"00000000000000004338\",\"tokens\":{\"L\":\"206080450\",\"6\":\"9.0.80330\",\"R\":\"AADPkvAAEAAEqLzAAC\"},\"before\":{\"CUST_CODE\":\"DAVE\",\"ORDER_DATE\":\"1993-11-03:07:51:35\",\"PRODUCT_CODE\":\"PLANE\",\"ORDER_ID\":\"600\"}}";

System.out.println(parseSQL(insert));

System.out.println(parseSQL(update));

System.out.println(parseSQL(delete));

}

}

用java语句截取sql字符串的表名和字段

如果只有一个sql串的话,应该是很难实现的,除非你能知道只有几种固定的sql,基本思路就是indexof和split来拆分了,很麻烦!

java 怎么用正则表达式解析sql中的表名,已有半成品,求改善

String str="from\\s+(.*)\\s+where?";

String sql="select * from table,table2 where a=b";

Pattern p=Pattern.compile(str);

        Matcher matcher=p.matcher(sql);

        while (matcher.find()) {

         String string =matcher.group(1);

         System.out.println(string);

}

java语句中取得sql中的一个字段的值

......

ResultSet rs = stmt.executeQuery(sql);

String priceType = null;

if(rs.next()) {

priceType = rs.getString("value");

......

}

java解析字符串(解析sql语句,得到需要查询显示的字段名)。

我写一条把

String aa=''select "+f_spbm+" from 表1"

主要注意其中的空格 select 后面的, from前面的空格。。

第二条一样。。表不固定,字段也就不能固定,功能也就不能固定,一般编写都会将表固定的。

java解析sql语句是实现不了的

哈哈,楼主没文化了。这个是需要词法解析和语法解析的。总体的思路是设计一个分词器,按规则将语句进行分词。例如,关键字用1表示,字符串用2表示,当分词到 select时,标识1,分词到'select'时标识为2。然后语法解析器用来分析怎么样的词法组合才合理,需要构造语法树等。

整体来说还是很复杂的,但是是完全可以实现的。

最后推荐个很好的java实现: JavaCC

关于java解析sql字段和java sql解析框架的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

The End

发布于:2022-12-01,除非注明,否则均为首码项目网原创文章,转载请注明出处。