Comments (4)
I guess I added it 10 years ago :-)
This seems to work ok with our application (based on 1.8.0 source)
public class ParameterParser implements CharParser{
private final Map<String, List<Integer>> parameterMap;
int paramIdx = 1;
public ParameterParser(Map<String, List<Integer>> parameterMap) {
this.parameterMap = parameterMap;
}
@Override
public boolean canParse(char c, String sql, int idx) {
// Vertex changes to support ? in SQL in addition to named params
if( c == '?' ) {
return true;
}
return sql.length() > idx + 1 && c == ':' && Character.isJavaIdentifierStart( sql.charAt(idx + 1) ) && sql.charAt(idx-1) != ':';
}
@Override
public int parse(char c, int idx, StringBuilder parsedSql, String sql, int length) {
// Vertex changes to support ? in SQL in addition to named params
if( c == '?' ) {
String paramName = "p" + paramIdx;
List<Integer> indices = parameterMap.computeIfAbsent( paramName, k -> new ArrayList<>() );
indices.add(paramIdx++);
}
else {
int startIdx = idx;
idx += 1;
while( idx + 1 < length && Character.isJavaIdentifierPart( sql.charAt( idx + 1 ) ) )
{
idx += 1;
}
String name = sql.substring(startIdx + 1, idx + 1);
List<Integer> indices = parameterMap.computeIfAbsent( name, k -> new ArrayList<>() );
indices.add(paramIdx++);
}
parsedSql.append("?");
return idx;
}
}
from sql2o.
Hi,
I checked the code for Sql2o version 1.5.1, and the code for the createQueryWithParams
method looks more or less the same. So, I don't think this has been officially supported. But as you say, it's been a while since the library was updated, so I might be mistaken.
The createQueryWithParams
method expects parameters to be named :p1
, :p2
, and so on, which is kind of silly. I would prefer if the variant you are using also works since ?
is the official character for parameters in Java. If it isn't too much work to fix, I might just do that. I'll check it out and let you know what I find out.
from sql2o.
The changes above just parse out the ? and make fake param names.
from sql2o.
You posted your comment a minute before me there 😄. Thank you for posting that, I'll check it out.
from sql2o.
Related Issues (20)
- Issue with ArrayParameters.updateQueryWithArrayParameters when query contains '?' character
- When in jar file I receive No suitable driver for error HOT 1
- Publish version 1.6.0 of oracle extensions
- sql2o can't rolback ? HOT 3
- can i change the Type of return value of executeAndFetch()
- State of the Project
- NPE when return query object is of type Map HOT 1
- How to correctly insert with array type (ex bigint[]) columns?
- Library uses now-private reflection mechanism HOT 2
- Can't add ON DELETE CASCADE to forein key when creating table, using PostgreSQL. HOT 1
- Updated MySQL 8.0.26 connector breaks historically working code HOT 2
- Next release HOT 2
- MethodSetter setProperty failing with generic IllegalArgumentException
- Failed test testAllTypes(org.sql2o.reflect.ReflectionFieldSetterFactoryTest) only in Maven HOT 2
- Collection of enums is not properly mapped to query params HOT 1
- SQL2o 1.6.0 Compatabile with JDK 17/ OpenJDK 17 ? HOT 1
- Retrieving List<Long> from query HOT 2
- Query.withParams upgrade HOT 2
- Javadoc has an issue with the CDN HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from sql2o.