如何使用java sql parserr java

> SQL解析类库介绍1.JsqlparserJSqlParser能够解析SQL语句并它翻译成一个Ja
SQL解析类库介绍1.JsqlparserJSqlParser能够解析SQL语句并它翻译成一个Ja
hgxsdx2009 & &
发布时间: & &
浏览:21 & &
回复:0 & &
悬赏:0.0希赛币
SQL解析类库介绍
  1. Jsqlparser
  JSqlParser能够解析SQL语句并它翻译成一个Java类层次。它产生的层次可以使用访问者模式导航。
  SQLJEP 是一个用来解析和仿真执行SQL语句的Java类库。支持几乎所有 Oracle 和 MaxDB 的函数。SQLJEP 使用 JavaCC 来做词法分析。
  使用方法示例:
  ResultSet rs = statement.excute("SELECT ID,SUM,SALE_DATE from test");ResultSetJEP sqljep = new ResultSetJEP("ID in (1,2,3) and SUM&100 and SALE_DATE&trunc(sysdate)-7");try {  sqljep.addConstant("sysdate", new java.util.Date());  sqljep.parseExpression(rs);  whille (rs.next()) {  
System.out.println(sqljep.getValue());  }}catch (ParseException e) {  e.printStackTrace();}
  3.SqlBuilder
  SqlBuilder 是一个Java的类库,它试图帮你避免在Java程序内直接书写SQL查询的痛苦。你只需要使用 SqlBuilder 的方法,它就可以帮你生成对应的 SQL 数据库查询语句,例如下面一个SQL语句:String selectQuery = "SELECT " + T1_COL1 + "," + T1_COL2 + "," +
T2_COL1 + " FROM " + TABLE1 + " " + T1 + " INNER JOIN " +
TABLE2 + " " + T2 + " ON (" + T1_IDCOL + " = " + T2_IDCOL +
") ORDER BY " + T1_COL1;对应的 SqlBuilder 的代码是:
  String selectQuery =
(new SelectQuery()) .addColumns(t1Col1, t1Col2, t2Col1).addJoin(SelectQuery.JoinType.INNER_JOIN, joinOfT1AndT2)
.addOrderings(t1Col1)
.validate().toString();
  4.Querydsl
  Querydsl是一个Java开源框架用于构建类型安全的SQL查询语句。它采用API代替拼凑字符串来构造查询语句。可跟 Hibernate 和 JPA 等框架结合使用。
本问题标题:
本问题地址:
温馨提示:本问题已经关闭,不能解答。
暂无合适的专家
&&&&&&&&&&&&&&&
希赛网 版权所有 & &&基于SQL 语法解释器JSqlParser实现的SQL解析工具 - 懒虫的天空 - ITeye技术网站
博客分类:
前段时间意外见到,一个基于Java的SQL解析的开源项目,网上有很多这方面的资料,想详细了解的可以自己G一把...
它可以把SQL语句转换为Java对象,由于JsqlParser是使用做语法分析的,而本身JavaCC就支持JJTree...如是就写了个小工具SQLParser,将生成的对象以树的形式呈现出来^-^
先上软件,后续会对它的实现做一些分享~~有图有真相,上图
另外一位前辈N年前就写了一个,用ANTLR实现的,有兴趣的可以浏览一下:
下载次数: 986
下载次数: 362
浏览 18051
源代码下载过来缺少三个包,jsqlparser 14 这个哪里能下载到& 搜不到14的版本呀在 zip 包里面的jar 包中可以找到
浏览: 380052 次
来自: 珠海
我只是想长肉 写道源代码下载过来缺少三个包,jsqlparse ...
源代码下载过来缺少三个包,jsqlparser 14 这个哪里 ...
多谢博主,找了许久,我看能不能做成eclipse下sql语句的 ...
怎么下不下来啊
没想到很多朋友想要源码,现在直接附上,希望能帮到你们。JSqlParser - Home
What is it
JSqlParser parses an SQL statement and translate it into
a hierarchy of Java classes.
The generated hierarchy can be navigated using the
How it works
It is built using . The core
JavaCC grammar for SQL has been taken from
and has been changed in order to
produce a hierarchy of Java classes.
Alternatives to JSqlParser?
looks pretty good, with extended SQL syntax (like
PL/SQL and T-SQL) and java + .NET APIs.
The tool is commercial (license available online), with a free download option.
How it can be used
The method
returns a class implementing
which can be used to navigate the structure representing the SQL statement.
To avoid using the instanceof operator as
if (statement instanceof Insert) {
// insert case
else if (statement instanceof Update) {
// update case
the hierarchy can be accessed using proper visitors:
void visit(Insert statement) {
// insert case
void visit(Update statement) {
// update case本帖子已过去太久远了,不再提供回复功能。>> SQLParser.java
SQLParser.java ( 文件浏览 )
// jTDS JDBC Driver for Microsoft SQL Server and Sybase
// Copyright (C) 2004 The jTDS Project
// This libr you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software F either
// version 2.1 of the License, or (at your option) any later version.
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the GNU
// Lesser General Public License for more details.
// You should have received a copy of the GNU Lesser General Public
// License alo if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
package net.sourceforge.jtds.
import java.sql.SQLE
import java.util.ArrayL
import java.util.HashM
import net.sourceforge.jtds.jdbc.cache.SimpleLRUC
import net.sourceforge.jtds.jdbc.cache.SQLCacheK
* Process JDBC escape strings and parameter markers in the SQL string.
* This code recognizes the following escapes:
* &li&Date
d 'yyyy-mm-dd'
* &li&Time
t 'hh:mm:ss'
* &li&Timestamp {
ts 'yyyy-mm-dd hh:mm:ss.nnn'
* &li&ESCAPE
escape 'x'
* &li&Function
fn xxxx([arg,arg...])
* NB The concat(arg, arg) operator is converted to (arg + arg)
* &li&OuterJoin {
* &li&Call
?=call proc [arg, arg...]
call proc [arg, arg...]
* &li&This code is designed to be as efficient as possible and as
* result the validation done here is limited.
* &li&SQL comments are parsed correctly thanks to code supplied by
* Joel Fouse.
* @author Mike Hutchinson
* @version $Id: SQLParser.java,v 1.25
09:24:03 alin_sinpalean Exp $
class SQLParser {
* Serialized version of a parsed SQL query (the value stored in the cache
* for a parsed SQL).
* Holds the parsed SQL query and the names, positions and return value and
* unicode flags for the parameters.
private static class CachedSQLQuery {
final String[]
final String[]
final int[]
paramMarkerP
final boolean[] paramIsRetV
final boolean[] paramIsU
CachedSQLQuery(String[] parsedSql, ArrayList params) {
this.parsedSql = parsedS
if (params != null) {
final int size = params.size();
paramNames
= new String[size];
paramMarkerPos = new int[size];
paramIsRetVal
= new boolean[size];
paramIsUnicode = new boolean[size];
for (int i = 0; i & i++) {
ParamInfo paramInfo = (ParamInfo) params.get(i);
paramNames[i]
= paramInfo.
paramMarkerPos[i] = paramInfo.markerP
paramIsRetVal[i]
= paramInfo.isRetV
paramIsUnicode[i] = paramInfo.isU
paramNames =
paramMarkerPos =
paramIsRetVal =
paramIsUnicode =
/** LRU cache of previously parsed SQL */
private static SimpleLRUC
/** Original SQL string */
private final S
/** Input buffer with SQL statement. */
private final char[]
/** Current position in input buffer. */
/** Length of input buffer. */
/** Output buffer to contain parsed SQL. */
private final char[]
/** Current position in output buffer. */
* Parameter list to be populated or &code&null&/code& if no parameters
* are expected.
private final ArrayL
/** Current expected terminator character. */
/** Procedure name in call escape. */
private String procN
/** First SQL keyword or identifier in statement. */
private String keyW
/** First table name in from clause */
private String tableN
/** Connection object for server specific parsing. */
private final ConnectionJDBC2
* Parse the SQL statement processing JDBC escapes and parameter markers.
* @param extractTable
true to return the first table name in the FROM clause of a select
* @return The processed SQL statement, any procedure name, the first SQL
keyword and (optionally) the first table name as
elements 0 1, 2 and 3 of the returned &code&String[]&/code&.
* @throws SQLException if a parse error occurs
static String[] parse(String sql, ArrayList paramList,
ConnectionJDBC2 connection, boolean extractTable)
throws SQLException {
// Don't cache extract table parse requests, just process it
if (extractTable) {
SQLParser parser = new SQLParser(sql, paramList, connection);
return parser.parse(extractTable);
SimpleLRUCache cache = getCache(connection);
SQLCacheKey cacheKey = new SQLCacheKey(sql, connection);
// By not synchronizing on the cache, we're admitting that the possibility of multiple
// parses of the same statement can occur.
However, it is 1) unlikely under normal
// usage, and 2) harmless to the cache.
By avoiding a synchronization block around
// the get()-parse()-put(), we reduce the contention greatly in the nominal case.
CachedSQLQuery cachedQuery = (CachedSQLQuery) cache.get(cacheKey);
if (cachedQuery == null) {
// Parse and cache SQL
SQLParser parser = new SQLParser(sql, paramList, connection);
cachedQuery = new CachedSQLQuery(parser.parse(extractTable),
paramList);
cache.put(cacheKey, cachedQuery);
// Create full ParamInfo objects out of cached object
final int length = (cachedQuery.paramNames == null)
? 0 : cachedQuery.paramNames.
for (int i = 0; i & i++) {
ParamInfo paramInfo = new ParamInfo(cachedQuery.paramNames[i],
cachedQuery.paramMarkerPos[i],
cachedQuery.paramIsRetVal[i],
cachedQuery.paramIsUnicode[i]);
paramList.add(paramInfo);
return cachedQuery.parsedS
// --------------------------- Private Methods --------------------------------
* Retrieves the statement cache, creating it if required.
* @return the cache as a &code&SimpleLRUCache&/code&
private synchronized static SimpleLRUCache getCache(ConnectionJDBC2 connection) {
if (cache == null) {
int maxStatements = connection.getMaxStatements();
maxStatements = Math.max(0, maxStatements);
maxStatements = Math.min(1000, maxStatements);
cache = new SimpleLRUCache(maxStatements);
/** Lookup table to test if character is part of an identifier. */
private static boolean identifierChar[] = {
false, false, false, false, false, false, false, false,
false, false, false, false, false, false, false, false,
false, false, false, false, false, false, false, false,
false, false, false, false, false, false, false, false,
false, false, false, true,
false, false, false,
false, false, false, false, false, false, false, false,
false, false, false, false, false, false,
false, false, false, false, true,
false, true,
false, false, false, false, false
* Determines if character could be part of an SQL identifier.
* Characters & 127 are assumed to be unicode letters in other
* languages than english which is reasonable in this application.
* @param ch the character to test.
* @return &code&boolean&/code& true if ch in A-Z a-z 0-9 @ $ # _.
private static boolean isIdentifier(int ch) {
return ch & 127 || identifierChar[ch];
* Constructs a new parser object to process the supplied SQL.
* @param sqlIn
the SQL statement to parse
* @param paramList the parameter list array to populate or
&code&null&/code& if no parameters are expected
* @param connection the parent Connection object
private SQLParser(String sqlIn, ArrayList paramList, ConnectionJDBC2 connection) {
sql = sqlIn;
= sql.toCharArray();
out = new char[len + 256]; // Allow extra for curdate/curtime
params = paramL
procName = &&;
this.connection =
* Inserts a String literal in the output buffer.
* @param txt The text to insert.
private void copyLiteral(String txt) throws SQLException {
final int len = txt.length();
for (int i = 0; i & i++) {
final char c = txt.charAt(i);
if (c == '?') {
if (params == null) {
throw new SQLException(
Messages.get(&error.p
(文件超长,未完全显示,请下载后阅读剩余部分)
展开> <收缩
下载源码到电脑,阅读使用更方便
还剩0行未阅读,继续阅读 ▼
Sponsored links
源码文件列表
温馨提示: 点击源码文件名可预览文件内容哦 ^_^
766.00 B 13:04
218.00 B 13:04
4.36 kB 13:04
4.76 kB 13:04
CHANGELOG143.60 kB 13:04
connection.properties.tmpl450.00 B 13:04
1.33 kB 13:04
2.18 kB 13:04
12.25 kB 13:03
4.38 kB 13:03
7.78 kB 13:03
881.41 kB 13:03
735.00 B 13:03
7.90 kB 13:03
4.52 kB 13:03
7.90 kB 13:03
4.50 kB 13:03
4.46 kB 13:03
8.51 kB 13:03
71.58 kB 13:03
9.43 kB 13:03
16.80 kB 13:03
19.77 kB 13:03
17.12 kB 13:03
1.15 kB 13:03
5.88 kB 13:03
5.86 kB 13:03
7.08 kB 13:03
15.18 kB 13:03
113.51 kB 13:03
4.63 kB 13:03
8.60 kB 13:03
6.33 kB 13:03
6.65 kB 13:03
53.37 kB 13:03
1.06 kB 13:03
5.60 kB 13:03
5.51 kB 13:03
6.24 kB 13:03
61.38 kB 13:03
50.65 kB 13:03
17.26 kB 13:03
71.40 kB 13:03
9.04 kB 13:03
4.57 kB 13:03
7.28 kB 13:03
4.54 kB 13:03
7.65 kB 13:03
1.29 kB 13:03
5.96 kB 13:03
5.86 kB 13:03
7.08 kB 13:03
6.76 kB 13:03
17.49 kB 13:03
16.95 kB 13:03
12.34 kB 13:03
11.62 kB 13:03
20.53 kB 13:03
4.46 kB 13:03
6.31 kB 13:03
16.34 kB 13:03
4.46 kB 13:03
24.14 kB 13:03
23.02 kB 13:03
4.50 kB 13:03
6.34 kB 13:03
4.52 kB 13:03
6.06 kB 13:03
7.36 kB 13:03
4.54 kB 13:03
10.02 kB 13:03
10.29 kB 13:03
4.55 kB 13:03
15.24 kB 13:03
4.46 kB 13:03
4.52 kB 13:03
4.50 kB 13:03
4.46 kB 13:03
4.55 kB 13:03
39.14 kB 13:03
9.22 kB 13:03
14.78 kB 13:03
12.10 kB 13:03
13.17 kB 13:03
4.60 kB 13:03
6.24 kB 13:03
7.45 kB 13:03
4.54 kB 13:03
6.56 kB 13:03
10.94 kB 13:03
8.05 kB 13:03
9.34 kB 13:03
4.57 kB 13:03
4.46 kB 13:03
4.45 kB 13:03
10.83 kB 13:03
6.24 kB 13:03
6.18 kB 13:03
4.45 kB 13:03
6.16 kB 13:03
6.26 kB 13:03
4.51 kB 13:03
4.46 kB 13:03
20.69 kB 13:03
18.75 kB 13:03
129.57 kB 13:03
38.00 kB 13:03
28.79 kB 13:03
46.21 kB 13:03
42.84 kB 13:03
89.05 kB 13:03
226.19 kB 13:03
73.17 kB 13:03
138.13 kB 13:03
27.34 kB 13:03
71.39 kB 13:03
16.71 kB 13:03
79.53 kB 13:03
13.79 kB 13:03
11.73 kB 13:03
4.13 kB 13:03
13.78 kB 13:03
11.49 kB 13:03
17.41 kB 13:03
18.21 kB 13:03
30.26 kB 13:03
22.10 kB 13:03
8.80 kB 13:03
33.35 kB 13:03
33.79 kB 13:03
7.63 kB 13:03
12.69 kB 13:03
12.60 kB 13:03
22.10 kB 13:03
26.04 kB 13:03
53.98 kB 13:03
6.65 kB 13:03
18.31 kB 13:03
6.74 kB 13:03
39.16 kB 13:03
39.35 kB 13:03
145.93 kB 13:03
6.58 kB 13:03
6.56 kB 13:03
71.78 kB 13:03
6.58 kB 13:03
25.14 kB 13:03
10.58 kB 13:03
29.07 kB 13:03
4.50 kB 13:03
4.64 kB 13:03
4.43 kB 13:03
4.51 kB 13:03
4.52 kB 13:03
4.48 kB 13:03
1.35 kB 13:03
6.11 kB 13:03
5.87 kB 13:03
4.25 kB 13:03
9.79 kB 13:03
7.63 kB 13:03
12.70 kB 13:03
15.05 kB 13:03
14.95 kB 13:03
14.79 kB 13:03
20.53 kB 13:03
21.74 kB 13:03
41.35 kB 13:03
4.44 kB 13:03
4.46 kB 13:03
4.55 kB 13:03
4.54 kB 13:03
4.56 kB 13:03
4.82 kB 13:03
4.47 kB 13:03
4.54 kB 13:03
4.59 kB 13:03
10.98 kB 13:03
8.43 kB 13:03
7.57 kB 13:03
4.57 kB 13:03
4.50 kB 13:03
4.69 kB 13:03
4.64 kB 13:03
4.48 kB 13:03
4.55 kB 13:03
4.79 kB 13:03
4.57 kB 13:03
6.45 kB 13:03
4.52 kB 13:03
4.48 kB 13:03
4.55 kB 13:03
4.66 kB 13:03
4.48 kB 13:03
4.49 kB 13:03
4.46 kB 13:03
4.47 kB 13:03
4.45 kB 13:03
4.46 kB 13:03
4.46 kB 13:03
14.10 kB 13:03
4.49 kB 13:03
4.48 kB 13:03
4.45 kB 13:03
4.48 kB 13:03
8.72 kB 13:03
4.47 kB 13:03
4.44 kB 13:03
18.67 kB 13:03
18.79 kB 13:03
17.48 kB 13:03
26.82 kB 13:03
24.29 kB 13:03
22.63 kB 13:03
19.94 kB 13:03
10.17 kB 13:03
39.49 kB 13:03
25.79 kB 13:03
21.89 kB 13:03
17.23 kB 13:03
17.12 kB 13:03
13.91 kB 13:03
14.43 kB 13:03
16.04 kB 13:03
13.64 kB 13:03
16.40 kB 13:03
17.58 kB 13:03
13.37 kB 13:03
3.96 kB 13:03
12.76 kB 13:03
10.85 kB 13:03
6.88 kB 13:03
35.61 kB 13:03
15.09 kB 13:03
14.63 kB 13:03
41.92 kB 13:03
44.83 kB 13:03
15.38 kB 13:03
27.57 kB 13:03
20.72 kB 13:03
20.19 kB 13:03
20.81 kB 13:03
46.53 kB 13:03
13.84 kB 13:03
16.03 kB 13:03
13.49 kB 13:03
19.45 kB 13:03
13.53 kB 13:03
20.38 kB 13:03
7.91 kB 13:03
7.10 kB 13:03
7.58 kB 13:03
7.08 kB 13:03
39.89 kB 13:03
7.59 kB 13:03
4.59 kB 13:03
4.59 kB 13:03
4.58 kB 13:03
4.59 kB 13:03
10.36 kB 13:03
4.60 kB 13:03
4.46 kB 13:03
6.79 kB 13:03
4.44 kB 13:03
6.00 kB 13:03
8.42 kB 13:03
6.91 kB 13:03
8.27 kB 13:03
4.57 kB 13:03
21.16 kB 13:03
14.51 kB 13:03
14.84 kB 13:03
26.38 kB 13:03
1.53 kB 13:03
6.61 kB 13:03
6.79 kB 13:03
8.39 kB 13:03
18.26 kB 13:03
18.35 kB 13:03
6.78 kB 13:03
6.51 kB 13:03
1.75 kB 13:03
5.31 kB 13:03
22.83 kB 13:03
package-list195.00 B 13:03
654.00 B 13:03
9.27 kB 13:03
1.21 kB 13:03
166.00 B 13:04
36.81 kB 13:04
13.70 kB 13:04
32.28 kB 13:04
5.21 kB 13:04
8.12 kB 13:04
55.65 kB 13:04
7.18 kB 13:04
logo.gif2.19 kB 13:04
logoBg.gif524.00 B 13:04
logoDataDino.gif3.74 kB 13:04
logoDBSolo.gif3.82 kB 13:04
logoDbVisualizer.gif1.69 kB 13:04
logoFreeTDS.gif743.00 B 13:04
logoJDBC.gif617.00 B 13:04
logoSourceForge.gif1.22 kB 13:04
logoSQLServer.gif3.48 kB 13:04
logoSquirrelSQL.gif2.56 kB 13:04
mainb.gif50.00 B 13:04
mainbl.gif111.00 B 13:04
mainbr.gif79.00 B 13:04
mainl.gif90.00 B 13:04
mainr.gif63.00 B 13:04
maint.gif90.00 B 13:04
maintl.gif186.00 B 13:04
maintr.gif174.00 B 13:04
spacer.gif43.00 B 13:04
8.77 kB 13:04
4.93 kB 13:04
8.39 kB 13:04
6.12 kB 13:04
8.45 kB 13:04
2.78 kB 13:04
2.52 kB 13:04
28.18 kB 13:04
6.69 kB 13:04
40.00 B 13:04
ant-junit.jar65.70 kB 13:04
ant-launcher.jar8.21 kB 13:04
ant.jar936.38 kB 13:04
crimson.jar191.80 kB 13:04
jaxp.jar32.54 kB 13:04
jcert.jar11.22 kB 13:04
jcifs-0.9.6.jar248.11 kB 13:04
jdbc2_0-stdext.jar6.57 kB 13:04
jdbc3_0-ext.jar1.12 kB 13:04
jnet.jar5.85 kB 13:04
jsse.jar502.41 kB 13:04
jta-1.0.1B.jar8.61 kB 13:04
JtdsXA.dll52.00 kB 13:04
junit.jar118.23 kB 13:04
ntlmauth.dll48.00 kB 13:04
LICENSE25.81 kB 13:04
3.85 kB 13:04
5.93 kB 13:04
6.59 kB 13:04
2.85 kB 13:04
20.96 kB 13:04
6.97 kB 13:04
2.66 kB 13:04
4.09 kB 13:04
4.62 kB 13:04
4.88 kB 13:04
45.61 kB 13:04
21.54 kB 13:04
21.65 kB 13:04
20.70 kB 13:04
4.00 kB 13:04
52.39 kB 13:04
6.98 kB 13:04
3.83 kB 13:04
2.23 kB 13:04
3.76 kB 13:04
8.94 kB 13:04
Charsets.properties5.16 kB 13:04
7.79 kB 13:04
2.48 kB 13:04
70.21 kB 13:04
8.58 kB 13:04
16.25 kB 13:04
15.82 kB 13:04
16.10 kB 13:04
19.07 kB 13:04
129.42 kB 13:04
29.05 kB 13:04
41.56 kB 13:04
5.23 kB 13:04
41.00 kB 13:04
5.80 kB 13:04
Messages.properties14.04 kB 13:04
42.36 kB 13:04
6.63 kB 13:04
4.35 kB 13:04
3.91 kB 13:04
9.70 kB 13:04
4.71 kB 13:04
1.28 kB 13:04
15.53 kB 13:04
14.73 kB 13:04
2.22 kB 13:04
4.33 kB 13:04
4.62 kB 13:04
6.64 kB 13:04
33.25 kB 13:04
20.51 kB 13:04
36.88 kB 13:04
49.39 kB 13:04
140.00 kB 13:04
99.05 kB 13:04
9.50 kB 13:04
2.52 kB 13:04
24.58 kB 13:04
7.10 kB 13:04
2.06 kB 13:04
4.57 kB 13:04
6.34 kB 13:04
2.77 kB 13:04
41.39 kB 13:04
17.67 kB 13:04
3.68 kB 13:04
6.24 kB 13:04
8.29 kB 13:04
4.35 kB 13:04
8.01 kB 13:04
218.00 B 13:04
ntlmauth.mak4.66 kB 13:04
1.08 kB 13:04
729.00 B 13:04
2.51 kB 13:04
11.96 kB 13:04
1.13 kB 13:04
18.71 kB 13:04
12.08 kB 13:04
4.15 kB 13:04
29.19 kB 13:04
8.77 kB 13:04
10.16 kB 13:04
2.21 kB 13:04
58.63 kB 13:04
4.25 kB 13:04
40.40 kB 13:04
4.17 kB 13:04
4.65 kB 13:04
1.78 kB 13:04
17.68 kB 13:04
9.65 kB 13:04
13.29 kB 13:04
2.58 kB 13:04
6.81 kB 13:04
3.89 kB 13:04
7.93 kB 13:04
6.67 kB 13:04
3.59 kB 13:04
98.25 kB 13:04
2.13 kB 13:04
3.51 kB 13:04
1.69 kB 13:04
30.94 kB 13:04
6.79 kB 13:04
54.42 kB 13:04
60.82 kB 13:04
4.95 kB 13:04
9.89 kB 13:04
21.18 kB 13:04
7.97 kB 13:04
12.09 kB 13:04
7.61 kB 13:04
84.62 kB 13:04
5.34 kB 13:04
1.92 kB 13:04
2.88 kB 13:04
8.20 kB 13:04
1.10 kB 13:04
14.94 kB 13:04
1.52 kB 13:04
3.47 kB 13:04
3.65 kB 13:04
432.00 B 13:04
35.52 kB 13:04
JtdsXA.dep434.00 B 13:04
JtdsXA.dsp4.25 kB 13:04
JtdsXA.dsw506.00 B 13:04
6.68 kB 13:04
JtdsXA.mak5.32 kB 13:04
2.46 kB 13:04
395.00 B 13:04
Sponsored links
评价成功,多谢!
CodeForge积分(原CF币)全新升级,功能更强大,使用更便捷,不仅可以用来下载海量源代码马上还可兑换精美小礼品了
您的积分不足
支付宝优惠套餐快速获取 30 积分
10积分 / ¥100
30积分 / ¥200原价 ¥300 元
100积分 / ¥500原价 ¥1000 元
订单支付完成后,积分将自动加入到您的账号。以下是优惠期的人民币价格,优惠期过后将恢复美元价格。
支付宝支付宝付款
微信钱包微信付款
更多付款方式:、
您本次下载所消耗的积分将转交上传作者。
同一源码,30天内重复下载,只扣除一次积分。
鲁ICP备号-3 runtime:Elapsed:34.585ms 5.8
登录 CodeForge
还没有CodeForge账号?
Switch to the English version?
^_^"呃 ...
Sorry!这位大神很神秘,未开通博客呢,请浏览一下其他的吧

我要回帖

更多关于 sqlparser 的文章

 

随机推荐