當前位置:首頁 » 編程語言 » 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的格式轉化為時間類型,然後加上了幾個小時

熱點內容
路由器怎麼設置登錄密碼怎麼設置密碼 發布:2025-01-10 21:11:12 瀏覽:893
營運車解壓 發布:2025-01-10 21:11:01 瀏覽:932
安卓是哪裡出產 發布:2025-01-10 21:10:23 瀏覽:953
本科來了安卓版叫什麼 發布:2025-01-10 21:08:43 瀏覽:649
南京c語言 發布:2025-01-10 20:55:08 瀏覽:466
如何excel設置密碼保護 發布:2025-01-10 20:50:07 瀏覽:994
桌面文件限制存儲大小 發布:2025-01-10 20:28:45 瀏覽:79
安卓車機怎麼把應用放界面 發布:2025-01-10 20:28:36 瀏覽:679
減演算法小學 發布:2025-01-10 20:22:41 瀏覽:799
ig源碼網 發布:2025-01-10 20:20:04 瀏覽:420