繁体   English   中英

如何将java的字符串值传递给sql查询

[英]How to pass a string value of java to sql query

我试图在Java Netbeans中创建这个SQL查询:

SELECT * FROM DBNAME WHERE NAME LIKE '%SOMETHING%'

我正在使用这样的Prepared Statement:

PreparedStatement ps=con.prepareStatement("SELECT * FROM demo WHERE NAME LIKE ? ");
ps.setString(1, "%"+something+"%");
...

问题是“setString”根本不起作用。 我发现“'”的值实际上是“\\”,因此查询变为

SELECT * FROM DBNAME WHERE NAME LIKE \'%SOMETHING%\'

尝试这个:

String sql = "select * from tablename like ?";
String sqlParasValue = "%" + "2015-03-23" + "%";
pStmt =conn.prepareStatement(sql);
pStmt.setString(1, sqlParasValue);//Automatically add single quotes
pStmt.execute();

我在我的代码上尝试这个,这是工作。 我使用Spring启动+ mybatis + postgresql

SQL表和一些数据:

name   h    w    f
xi  182  53  li
1xi 181  52  [NULL]
li  180  51  xh
zs  165  50  li
xh  190  52  [NULL]

sql查询:

select name from stu where name like '%x%'

sql查询结果:

name    h   w   f
xi  182 53  li
1xi 181 52  [NULL]
xh  190 52  [NULL]

java代码

@Select("select name  from stu where name like #{name}")
List<String> test(@Param("name") String name);
List<String> s = serviceImpl.test("%x%");
for(String ss : s){
    System.out.println(ss);
}

安慰 :

2017-04-06 14:02:47.607  INFO 7932 --- [           main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 8080 (http)
2017-04-06 14:02:47.619  INFO 7932 --- [           main] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Starting...
2017-04-06 14:02:47.759  INFO 7932 --- [           main] com.zaxxer.hikari.pool.PoolBase          : HikariPool-1 - Driver does not support get/set network timeout for connections. (这个 org.postgresql.jdbc.PgConnection.getNetworkTimeout() 方法尚未被实作。)
2017-04-06 14:02:47.777  INFO 7932 --- [           main] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Start completed.
xi
1xi
xh
2017-04-06 14:02:47.848  INFO 7932 --- [           main] com.ium.um.Application                   : Started Application in 5.911 seconds (JVM running for 6.416)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM