当前位置:首页 » 编程语言 » java解析sql语句

java解析sql语句

发布时间: 2022-09-22 11:55:27

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

这个需要用到编译原理的知识,理论上,既然dbms可以解析,那我们当然可以实现。
不过比较、很、太难实现而已。
并且不同数据库、不同版本的语法结构还不一样,又进一步增加了难度

② java 怎么获取原生sql语句

java 获取原生sql语句:
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"
init-method="init" destroy-method="close">

<!-- 配置filters -->
<property name="proxyFilters">
<list>
<bean id="log-filter" class="com.alibaba.druid.filter.logging.Log4jFilter">
<property name="statementLogEnabled" value="false" />
<property name="" value="true" />
</bean>
</list>
</property>
</bean>

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

importjava.util.Iterator;
importjava.util.Set;
importjava.util.Map.Entry;

importcom.google.gson.JsonArray;
importcom.google.gson.JsonElement;
importcom.google.gson.JsonObject;
importcom.google.gson.JsonParser;

publicclassSql
{
publicstaticStringparseSQL(Stringjson)
{
JsonParserparser=newJsonParser();
JsonObjectobj=(JsonObject)parser.parse(json);;
Stringtable=obj.get("table").getAsString();
Stringop_type=obj.get("op_type").getAsString();
Stringsql="";
if("I".equals(op_type))
{
sql+="INSERTINTO"+table+"(";
JsonObjectafter=(JsonObject)obj.get("after");
Set<Entry<String,JsonElement>>entry=after.entrySet();
Iterator<Entry<String,JsonElement>>it=entry.iterator();
Stringvs="values(";
while(it.hasNext())
{
Entry<String,JsonElement>elem=it.next();
Stringkey=elem.getKey();
Stringval=elem.getValue().toString();
sql+=key+",";
vs+=val+",";
}
sql=sql.replaceAll(",\s*$","");
vs=vs.replaceAll(",\s*$","");
sql+=")"+vs+")";
}
elseif("U".equals(op_type))
{
sql+="UPDATE"+table+"SET";
JsonObjectafter=(JsonObject)obj.get("after");
Set<Entry<String,JsonElement>>entry=after.entrySet();
Iterator<Entry<String,JsonElement>>it=entry.iterator();
while(it.hasNext())
{
Entry<String,JsonElement>elem=it.next();
Stringkey=elem.getKey();
Stringval=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())
{
Entry<String,JsonElement>elem=it.next();
Stringkey=elem.getKey();
Stringval=elem.getValue().toString();
sql+=key+"="+val+"AND";
}
sql=sql.replaceAll("\s*AND\s*$","");
}
elseif("D".equals(op_type))
{
sql+="DELETEFROM"+table+"WHERE";
JsonObjectafter=(JsonObject)obj.get("before");
Set<Entry<String,JsonElement>>entry=after.entrySet();
Iterator<Entry<String,JsonElement>>it=entry.iterator();
while(it.hasNext())
{
Entry<String,JsonElement>elem=it.next();
Stringkey=elem.getKey();
Stringval=elem.getValue().toString();
sql+=key+"="+val+"AND";
}
sql=sql.replaceAll("\s*AND\s*$","");
}
returnsql;
}

publicstaticvoidmain(String[]args)
{
Stringinsert=
"{"table":"GG.TCUSTORD","op_type":"I","op_ts":"2013-06-0222: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"}}";
Stringupdate=
"{"table":"GG.TCUSTORD","op_type":"U","op_ts":"2013-06-0222: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"}}";
Stringdelete=
"{"table":"GG.TCUSTORD","op_type":"D","op_ts":"2013-06-0222: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中访问MySql数据库执行SQL语句的问题!!show tables~

select table_name from information_schema.tables

这条sql可以获取当前数据库中所有表名。
information_schema.tables 存放当前数据库中所有表名。
后面可以加条件选择需要查询的表。
这样查询出来的就可以通过遍历输出。

希望对你有帮助!!

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

在Sql语句前加上SET FMTONLY ON,再执行Sql语句,该设置只将元数据返回给客户端,可以用于测试响应的格式,而不必实际执行查询.有了返回的表结构,还怕得到不到要查询的字段
例:
SET FMTONLY ON;
SELECT f_spbm,f_spmc as '名称' FROM 表1;
SET FMTONLY OFF;

⑥ java 验证字符串是否为sql语句 并且是否包含 select 关键字

java验证字符串是否为sql语句,是否包含select关键字,主要使用的是正则表达式来进行验证,如下:

importjava.util.*;
importjava.text.*;
classsqltest
{
publicstaticvoidmain(String[]args)
{
Stringspan="selectaaaa.idname,hello,typet,hfromdatasaaaa,citybwherea.id=b.idandclike'e%'andnameisnull";
span=span.toUpperCase();//测试用sql语句
System.out.println(span);
Stringcolumn="(\w+\s*(\w+\s*){0,1})";//一列的正则表达式匹配如proctp
Stringcolumns=column+"(,\s*"+column+")*";//多列正则表达式匹配如proctp,categoryc,warehousew
Stringownerenable="((\w+\.){0,1}\w+\s*(\w+\s*){0,1})";//一列的正则表达式匹配如a.proctp
Stringownerenables=ownerenable+"(,\s*"+ownerenable+")*";//多列正则表达式匹配如a.proctp,a.categoryc,b.warehousew
Stringfrom="FROM\s+"+columns;
Stringcondition="(\w+\.){0,1}\w+\s*(=|LIKE|IS)\s*'?(\w+\.){0,1}[\w%]+'?";//条件的正则表达式匹配如a=b或aisb..
Stringconditions=condition+"(\s+(AND|OR)\s*"+condition+"\s*)*";//多个条件匹配如a=bandclike'r%'ordisnull
Stringwhere="(WHERE\s+"+conditions+"){0,1}";
Stringpattern="SELECT\s+(\*|"+ownerenables+"\s+"+from+")\s+"+where+"\s*";//匹配最终sql的正则表达式
System.out.println(pattern);//输出正则表达式
System.out.println(span.matches(pattern));//是否比配

}
}

⑦ java中如何通过xml配置文件来操作sql语句

xml本来就是为定义数据服务的,在解析xml的时候,可以按照预定义的规则进行解析。具体的格式可以由自己来定义,但是这种格式涵盖的内容必须包含构建这个表(实现某一数据结构)的必须条件。 这样定义好xml之后,在解析的时候可以根据给定规则,解析出具体的某个表(某一数据结构)。 对于你的这段xml也就是这样的。具体的解析方法,可以看dom解析 sax解析 ==

⑧ java如何执行sql语句

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.SQLException;

import java.sql.Statement;


public class xxxx {

public static void main(String[] args) {

Connection con = null ;

Statement stmt = null ;

try {

Class.forName("com.mysql.jdbc.Driver"); //mysql为例 不一样的数据库所需的驱动包不一样 连接语句略有不同

con = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/数据库名", "root", "密码");

stmt = con.createStatement();

String sql = "insert into info values ('用户', 'mima', 'piapiapia~')";

stmt.executeUpdate(sql);

} catch (ClassNotFoundException e) {

e.printStackTrace();

} catch (SQLException e) {

e.printStackTrace();

} finally {

try {

if(stmt != null) {

stmt.close();

stmt = null;

}

if (con != null) {

con.close();

con = null;

}

} catch (SQLException e) {

e.printStackTrace();

}

}

}


}


⑨ 大数据分析师面试必备:java与mysql解析

【导读】作为大数据工程师,其必须要掌握的基础知识就是java与mysql的关系、交互和连接,作为基础,也是面试考官经常会考的内容,为了帮助大家都能顺利通过考试,今天小编就来和大家唠一唠java与mysql的关系、交互和连接,好了,开始今天的内容大数据分析师面试必备:java与mysql解析。

1. SQL语言四大类:

DQL 数据查询语言 select

DML 数据操作语言 insert、update、delete

DDL 数据界说语言 create、alter

DCL 数据控制语言 grant权限

2. mysql数据库中的decimal类型(是数值型,不能存放字符串):

举例:decimal(18,0) 常用于身份证号码,但是带x的不可以。

举例:decimal(5,2)

状况一:假设小数点前面是3位,后边是2位,正常状况。

状况二:5指的是小数点前后不能超过5位,小数点后有必要是2位。

3. mysql中InnoDB和MyISAM引擎的差异:

innodb支撑:事务和主外键

myisam不支撑:事务和主外键

4. 【不需要背诵,选择题考点】向mysql中,a向表中添加数据的几种写法,题目:id int 主键自增,name varchar(11)
不为空。

5. 操作mysql数据库表有两种方式,第一种:点八点吧;第二种:写代码。【不需要背诵,只需要了解,考试选择题会出】

6. 在Java中,简述面向对象三大特征。

7. 在Java中,常用关键字:

1. 定义类的关键字是什么? class

2. 继承的关键字是什么? extends

3. 定义接口的关键字是什么? interface

4. 实现接口的关键字是什么? implements

5. 抽象类的关键字是什么? abstract

8. 在Java中,抽象类和接口的区别:

1. 抽象类中可以包含普通方法和抽象方法,接口中只能包含抽象方法

2. 抽象类中可以有构造方法,接口中没有构造方法

3. 抽象类只能单继承,可以实现多个接口

9. Java接口中有哪些成员?

1. 构造方法,没有

2. 常量,默认访问修饰符public static final,没有变量

3. 抽象方法,默认访问修饰符public abstract

10. 在Java中,抽象类和抽象方法的关系:

1. 抽象类中可以包含普通方法和抽象方法,抽象方法一定存在抽象类中。

2. 子类继承抽象父类,必须实现|重写抽象方法,除非子类也是抽象类。

3. 【判断题】抽象类中必须包含抽象方法?【错误×】

4. 【判断题】抽象方法一定存在抽象类中?【正确√】

11. Java重载的特点:

1. 在同一个类中

2. 方法名相同

3. 参数列表(个数、类型、顺序)不同

4. 与返回值类型和访问修饰符无关

12. Java重写的特点:

1. 在父子类中

2. 方法名相同

3. 参数列表相同

4. 返回值类型相同,或是其子类

5. 访问修饰符相同,或不能严于父类

13. 列举几种Java实现多态的形式:

1. 继承的存在

2. 父类引用指向子类对象 | 向上转型

3. 父类作为方法的返回值类型,父类作为方法的参数

14. Java接口的特性:单根性和传递性

15. 在Java中,throws和throw的区别:

1. throws 声明异常,用在定义方法小括号的后面

2. throw 抛出异常,写在方法体内

以上就是小编今天给大家整理发送的关于大数据分析师面试必备:java与mysql解析的相关内容,希望对各位考生有所帮助,想知道更多关于数据分析师的基本要求有哪些,关注小编持续更新数据分析师岗位解析。

⑩ JAVA中的SQL语句请解释一下

别名,这个字段的别名,用coid来代替pt_company 意思是一样的,换一个名字而已,没影响。
他做了一个日期上的转换与赋值。把pt_datein按照%Y-%m-%d %k的格式转化为时间类型,然后加上了几个小时

热点内容
windows配置ftp 发布:2025-01-11 00:35:02 浏览:656
des算法代码c 发布:2025-01-11 00:33:42 浏览:805
共享文件夹设置密码无法访问 发布:2025-01-11 00:32:49 浏览:478
槽钢算法 发布:2025-01-11 00:26:21 浏览:883
linux命令包 发布:2025-01-10 23:54:26 浏览:32
python轮廓 发布:2025-01-10 23:49:23 浏览:178
思科配置线怎么选 发布:2025-01-10 23:48:44 浏览:704
解压水晶泥 发布:2025-01-10 23:27:23 浏览:634
小米摄像头如何改wifi密码 发布:2025-01-10 23:25:14 浏览:115
阿里云服务器首页 发布:2025-01-10 23:24:15 浏览:436