Example #1
0
  @Override
  public ResultSet executeQuery(String sql) throws SQLException {
    checkOpen();

    CsvDriver.writeLog("CsvStatement:executeQuery() - sql= " + sql);

    /*
     * Close any previous ResultSet, as required by JDBC.
     */
    try {
      if (lastResultSet != null) lastResultSet.close();
    } finally {
      lastResultSet = null;
      multipleParsers = null;
    }

    SqlParser parser = new SqlParser();
    try {
      parser.parse(sql);
    } catch (Exception e) {
      throw new SQLException(CsvResources.getString("syntaxError") + ": " + e.getMessage());
    }

    return executeParsedQuery(parser);
  }
 public void testWhere() throws Exception {
   ExpressionEvaluator evaluator = new ExpressionEvaluator();
   String testSql = "select * from aaa where /*%if false*/ename = 'aaa'/*%end */";
   SqlParser parser = new SqlParser(testSql);
   SqlNode sqlNode = parser.parse();
   PreparedSql sql =
       new NodePreparedSqlBuilder(
               config, SqlKind.SELECT, "dummyPath", evaluator, SqlLogType.FORMATTED)
           .build(sqlNode, Function.identity());
   assertEquals("select * from aaa", sql.getRawSql());
 }
 public void testWhere_embeddedVariable_orderBy() throws Exception {
   ExpressionEvaluator evaluator = new ExpressionEvaluator();
   evaluator.add("embedded", new Value(String.class, "order by bbb"));
   String testSql = "select * from aaa where /*%if false*/ename = 'aaa'/*%end */ /*#embedded*/";
   SqlParser parser = new SqlParser(testSql);
   SqlNode sqlNode = parser.parse();
   PreparedSql sql =
       new NodePreparedSqlBuilder(
               config, SqlKind.SELECT, "dummyPath", evaluator, SqlLogType.FORMATTED)
           .build(sqlNode, Function.identity());
   assertEquals("select * from aaa   order by bbb", sql.getRawSql());
 }
 public void testEmbeddedVariable_blockComment() throws Exception {
   ExpressionEvaluator evaluator = new ExpressionEvaluator();
   evaluator.add("name", new Value(String.class, "hoge"));
   evaluator.add("salary", new Value(BigDecimal.class, new BigDecimal(10000)));
   evaluator.add("orderBy", new Value(String.class, "aaa/*bbb"));
   String testSql =
       "select * from aaa where ename = /*name*/'aaa' and sal = /*salary*/-2000 /*#orderBy*/";
   SqlParser parser = new SqlParser(testSql);
   SqlNode sqlNode = parser.parse();
   try {
     new NodePreparedSqlBuilder(
             config, SqlKind.SELECT, "dummyPath", evaluator, SqlLogType.FORMATTED)
         .build(sqlNode, Function.identity());
     fail();
   } catch (JdbcException expected) {
     System.out.println(expected.getMessage());
     assertEquals(Message.DOMA2123, expected.getMessageResource());
   }
 }