- 浏览: 257716 次
- 性别:
- 来自: 长沙
文章分类
最新评论
-
aaddsfdsfsdfs:
var map = new AMap.Map('contain ...
【map】使用高德地图显示地图轨迹 -
di1984HIT:
xiang
【linux】使用bind进行DNS配置 -
di1984HIT:
分别算么??
【java】改写js百度地图测距方法 -
di1984HIT:
不错不错。。
【LBS】使用高德地图实现轨迹路线 -
di1984HIT:
不好用啊???
【map】使用高德地图显示地图轨迹
因为在项目中需要对sql进行解析,那么所以业务逻辑比较复杂。
然后就有了以下的代码。
有部分注释。大家可以勉强看看。
然后就有了以下的代码。
有部分注释。大家可以勉强看看。
package com.duduli.li; import java.util.HashMap; import java.util.IdentityHashMap; import java.util.Iterator; import java.util.Map; public class ParseSql { // 解析用户发送sql语句,获得用户所查询的表。以及获得所需要的列 public void parserSQL(String sql){ // mapTable获得表名和别名的一个map Map mapTable = new HashMap(); String tableName ; // select p.name,o.officedesc from person as p,office as o where p.officeID=o.id // select * from person if(sql.contains("as")){ // System.out.println("1:"+sql.substring(sql.indexOf("from")+4,sql.indexOf("where")).trim()); String s = sql.substring(sql.indexOf("from")+4,sql.indexOf("where")).trim(); String str[] = s.split(","); for(String st:str){ // string数组为获得表,map存表和简写对应关系 mapTable.put(st.substring(st.indexOf("as")+2, st.length()).trim(),st.substring(0, st.indexOf("as")-1)); // System.out.println("get the table: "+st.substring(0,st.indexOf("as")-1)); } }else{ // System.out.println(sql.substring(sql.indexOf("from")+4,sql.length()).trim()); tableName = sql.substring(sql.indexOf("from")+4,sql.length()).trim(); System.out.println("表名:"+tableName); } // System.out.println("table size is : "+mapTable.size()); Iterator it = mapTable.entrySet().iterator(); while(it.hasNext()){ Map.Entry m=(Map.Entry)it.next(); System.out.println(m.getKey()+" "+m.getValue()); } // 解析sql语句中所含有的列名 // select p.*,o.officedesc from person as p,office as o where p.officeID=o.id // if(sql.contains("*")){ // System.out.println(sql.substring(sql.indexOf("select")+6,sql.indexOf("from")).trim()); if(sql.contains(".")){ String tableMsg = sql.substring(sql.indexOf("select")+6,sql.indexOf("from")).trim(); String s [] = tableMsg.split(","); // mapColumns获得表别名和所需要的列名,使用IdentityHashMap的方法,对于有重复的KEY进行处理。 // 如果采用hashmap会对其进行覆盖。 Map mapColumns = new IdentityHashMap(); for(String s1:s){ System.out.println("000000"); mapColumns.put(s1.substring(0, s1.indexOf(".")), s1.substring(s1.indexOf(".")+1,s1.length())); } System.out.println(mapColumns); // System.out.println("columns size : " + mapColumns.size()); /*for(Object obj : mapColumns.keySet()){ Object value = mapColumns.get(obj ); System.out.println("values:"+value); }*/ /*for(Map.Entry entry:mapColumns.entrySet()){ System.out.println(entry.getKey()+"="+entry.getValue()); }*/ System.out.println(mapColumns.size()); Iterator iterator = mapColumns.entrySet().iterator(); while(iterator.hasNext()){ Map.Entry m=(Map.Entry)iterator.next(); System.out.println("table :"+mapTable.get(m.getKey())); // System.out.println(m.getKey()+" "+m.getValue()); System.out.println("columns:"+m.getValue()); } } // }else{ // System.out.println(sql.substring(sql.indexOf("select")+6,sql.indexOf("from")).trim()); // // } } public static void main(String[] args) { // new ParseSql().parserSQL("select p.name,o.officedesc from person as p,office as o where p.officeID=o.id"); // new ParseSql().parserSQL("select * from person"); // System.out.println("---------"); new ParseSql().parserSQL("select p.id,p.file,p.name,o.officedesc from person as p,office as o where p.officeID=o.id"); } }
发表评论
-
使用poi实现xlsx的读取
2018-08-31 17:01 647这里只是记录下,使用poi进行读取xlsx。 可以读取全部数据 ... -
使用java实现输出商品条码机商品数据信息
2018-08-29 15:43 1082如图片所示 这里采用方案是: 1,使用jbarcode生成一 ... -
spring boot + jpa实现数据查询工作
2018-08-28 12:38 2426前期已经将mybatis和hibernate已经进行了掌握。 ... -
使用程序实现截屏获取teamview登录信息
2018-04-16 10:42 560很多的时候,我们需要使用teamview进行远程登录。 比如现 ... -
【java】jfreechart退出图标程序继续
2014-11-24 11:34 808做一个窗体,然后调用jfreechart进行图标显示。 当关闭 ... -
【java】改写js百度地图测距方法
2014-08-08 11:41 1582百度地图测距js代码: var EARTHRADIUS = 6 ... -
【web service】使用cxf对客户端进行开发工作
2014-07-16 10:04 9231,在eclipse中建立一个java项目,为客户端调用web ... -
【java】图片传输方案
2014-05-04 09:59 4584之前做的web service 涉及到一些基础的传输,如基本类 ... -
【java】调用微软语音系统读取文本
2014-05-04 09:52 2420先期准备工作: 安装微软speechsdk51,下载j ... -
【java】试用讯飞SDK开发语音tts初步代码
2014-04-22 16:41 7202tts开发对中文并不很支 ... -
【java】字符串的压缩转码base64
2012-09-11 09:13 10641由于客户端与服务端之间采用web service的方式进行传输 ... -
【java】使用jna调用delphi编译dll总结
2012-09-04 11:29 1182调用dll中,可以的入参为pchar。返回的参数为pwidec ... -
【机器环境】java语言环境不同会出现莫名其妙的问题
2012-09-01 10:49 1016有这么一个功能: 模块是这样做的,因为做的是底层。 首先上层使 ... -
【java】试用JNA调用Delphi的dll方法。
2012-08-30 11:04 5111参考文章:http://hi.baidu.com/zuchan ... -
【接口开发】一个底层业务的很麻烦的接口开发
2012-08-29 14:53 988接口框架采用cxf,然后查询使用hibernate+sql的方 ... -
【java多线程】昨天的一个面试题目
2012-08-09 10:24 1075设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次 ... -
【一个笔试题目】java按字节进行截断
2012-08-08 22:21 1546不可否认,这是一个蛋疼的笔试题: 编程:编写一个截取字符串的函 ... -
【java】判断一个数是不是2的N次方
2012-08-01 19:10 9768第一种方法,对N进行循环除以2. public boolea ... -
java 加密。
2012-07-27 15:14 1069mark一下。 java下面的加密有三类,1,为sun自己的 ... -
【JAVA】加密解密(转http://www.wangchao.net.cn/bbsdetail_1742.html)
2012-03-05 11:42 1433package com.duduli.li; impor ...
相关推荐
项目中已使用的一个比较简单的SQL语句查询字段解析工具类
PreparedStatement对象可以重用,减少了SQL语句的解析时间。 在executeQuery()方法中,使用PreparedStatement来执行SQL语句,并将查询结果放入Vector容器中。 五、ResultSet详解 ResultSet是Java执行SQL语句实现...
Java的SQL解析器JSQLPaser是一个强大的开源库,专门设计用于处理SQL语句的解析工作。这个库允许开发者分析SQL语句的结构,提取出其中的关键元素,如列名、表名、别名以及查询条件,从而在Java应用程序中实现对SQL的...
1. **SQL语句解析**:SQL(Structured Query Language)是用于管理和处理关系型数据库的标准语言。解析SQL语句是指将人类可读的SQL命令转化为计算机可执行的指令。这一过程通常由数据库管理系统(DBMS)完成,但开发者...
**JsonSQL: SQL语句解析JSON文件** 在大数据处理和Web应用中,JSON(JavaScript Object Notation)格式已经成为数据交换的常见格式。然而,对于习惯使用SQL查询关系型数据库的人来说,处理JSON数据可能会觉得不太...
为了实现这一目标,开发者通常会利用Java的JDBC(Java Database Connectivity)API或者其他第三方库来执行预编译或解析SQL语句。下面我们将详细探讨如何在Java中检查SQL语法的正确性。 首先,JDBC API提供了一个`...
SQL语句解析java包,含源代码: SELECT ANTIQUEOWNERS.OWNERLASTNAME, ANTIQUEOWNERS.OWNERFIRSTNAME FROM ANTIQUEOWNERS, ANTIQUES WHERE ANTIQUES.BUYERID = ANTIQUEOWNERS.OWNERID AND ANTIQUES.ITEM = 'Chair'; ...
"Java使用注解拼接SQL语句"是一个常见的实践,它使得动态构建SQL查询变得更为简洁和可维护。这种技术通常与ORM(对象关系映射)框架如MyBatis或Hibernate结合使用,但也可以通过自定义处理逻辑实现。 1. **自定义...
它提供了丰富的API,允许开发者对SQL语句进行深度解析,如访问查询中的表名、列名、条件表达式等元素。通过这些API,我们可以构建复杂的SQL操作逻辑,例如动态生成SQL、修改SQL结构或者提取查询信息。 使用...
在SQL语句中,使用问号(`?`)作为参数占位符是一种常见的做法,尤其是在编程语言如Java中与数据库交互时。这种方式被称为预编译语句或参数化查询,它具有重要的安全性和性能优势。 ### SQL参数化查询的概念 参数化...
Java解析SQL的基本思路是指使用Java语言对SQL语句进行解析和执行的过程。该过程通常涉及到两个主要步骤:分词和解析。在分词步骤中,Java程序会将输入的SQL语句分解为多个标记(tokens),以便于后续的解析和执行。...
虽然当前实现仅涵盖了查询语句,但设计时已经考虑到了扩展性,预留了对UPDATE、DELETE、INSERT等其他SQL语句的支持。 ANTLR的工作原理基于上下文无关语法(Context-Free Grammar,CFG),它允许开发者定义一套语法...
用户可以通过运行这个jar包来对SQL语句进行格式化操作。只需输入待格式化的SQL文本,工具就会返回格式化后的结果。 2. **Demo.java**:这是一个Java源代码文件,可能是用于演示如何使用SQLinForm.jar的示例。开发者...
在Java开发过程中,经常需要与数据库进行交互,尤其是在处理大量数据时,如何高效地执行SQL语句变得尤为重要。本文将详细介绍如何利用Java进行批量SQL执行,包括其背景、实现原理、代码示例及优化策略等。 #### 一...
它基于词法分析和语法分析的原理,将SQL语句转换为抽象语法树(AST),从而方便对SQL进行深度处理。通过这个模块,开发者可以轻松获取SQL的结构信息,例如表名、字段名、数据类型等,这对于自动化代码生成非常有帮助...
JSqlParser是一个用Java编写的开源SQL解析库,它可以解析SQL语句并生成抽象语法树(AST),也可以根据...使用JSqlParser,你可以解析诸如SELECT、INSERT、UPDATE、DELETE等各种SQL语句,并对其内容进行详细的控制和操作。
JSqlParser允许开发者对SQL语句进行深度解析,将其转换为抽象语法树(AST,Abstract Syntax Tree),这样就可以方便地遍历和修改SQL结构。这个工具对于那些需要动态构建SQL、验证SQL语法或者进行SQL优化的应用非常...
Java代码生成器是一种工具,它能够自动化创建Java代码,特别是针对数据访问层(DAO)的操作以及对应的SQL语句。这种工具极大地提高了开发效率,减少了手动编写这些基础代码的时间,使得开发者可以更专注于业务逻辑和...
这项操作可能涉及到数据库连接、数据查询、文件操作以及SQL语句的构建与执行。以下将详细介绍这个过程的各个环节。 1. **数据库连接**:在Java中,我们可以使用JDBC(Java Database Connectivity)来连接数据库。...