Java 为什么在sql查询中出现非法字符错误?

Java 为什么在sql查询中出现非法字符错误?,java,sql,jdbc,Java,Sql,Jdbc,错误表明非法字符的索引为6,但第6个字符是SELECT后的空格 static final String JDBC_DRIVER = "com.mysql.jdbc.Driver"; static final String DB_URL = "jdbc:mysql://sql3.freemysqlhosting.net:3306/"; static final String USER = "****"; static final String PASS = "****"; public

错误表明非法字符的索引为6,但第6个字符是SELECT后的空格

    static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
static final String DB_URL = "jdbc:mysql://sql3.freemysqlhosting.net:3306/";

static final String USER = "****";
static final String PASS = "****";

public JSONArray getLocation(ArrayList postParameters)
{
    Connection conn = null;
    HttpEntity httpEntity = null;
    try{

        Class.forName(JDBC_DRIVER);

        System.out.println("Connecting ");
        conn = DriverManager.getConnection(DB_URL, USER, PASS);
        System.out.println("Connection successful.");

        String sql = "SELECT * FROM locations WHERE locTag LIKE '%"+postParameters+"%'";

        DefaultHttpClient httpClient = new DefaultHttpClient();

        HttpPost httpPost = new HttpPost(sql);
        httpPost.setEntity(new UrlEncodedFormEntity(postParameters,"UTF-8"));
        HttpResponse httpResponse = httpClient.execute(httpPost);
        httpEntity = httpResponse.getEntity();
那我就要走了

java.lang.IllegalArgumentException: Illegal character in path at index 6: select * FROM locations WHERE locTag = '%[locTag=fast]%'

我也尝试过编码,但没有成功。

您正在尝试将SQL查询作为HTTP请求执行。这毫无意义。如果需要URI,则select语句不是URI


您要么需要使用JDBC来执行查询,要么需要获取或发布URI。我无法从你的代码中看出你实际上在做什么。

你确定你在末尾添加了分号吗?如果你试图进行SQL通配符搜索,你可能想尝试使用
,而不是
=
,如
“从locTag如“%”+postParameters+“%”的位置选择*
。共享和享受。@attaboy182-我认为通过JDBC.Hmmm执行查询时不需要分号……错误消息中的“in path”是什么意思?我怀疑这不是指声明文本。这可能是URL中的错误吗?请编辑该问题并包含用于调用该语句的Java代码,包括用于建立JDBC连接的代码。谢谢