KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > h2 > test > jdbc > TestNativeSQL


1 /*
2  * Copyright 2004-2006 H2 Group. Licensed under the H2 License, Version 1.0 (http://h2database.com/html/license.html).
3  * Initial Developer: H2 Group
4  */

5 package org.h2.test.jdbc;
6
7 import java.sql.*;
8
9 import org.h2.test.TestBase;
10
11 /**
12  * @author Thomas
13  */

14
15 public class TestNativeSQL extends TestBase {
16
17     public void test() throws Exception JavaDoc {
18         deleteDb("nativeSql");
19         Connection conn = getConnection("nativeSql");
20
21         for(int i=0;i<PAIRS.length;i+=2) {
22             test(conn, PAIRS[i], PAIRS[i+1]);
23         }
24         conn.nativeSQL("TEST");
25         conn.nativeSQL("TEST--testing");
26         conn.nativeSQL("TEST--testing{oj }");
27         conn.nativeSQL("TEST/*{fn }*/");
28         conn.nativeSQL("TEST//{fn }");
29         conn.nativeSQL("TEST-TEST/TEST/*TEST*/TEST--\rTEST--{fn }");
30         conn.nativeSQL("TEST-TEST//TEST");
31         conn.nativeSQL("'{}' '' \"1\" \"\"\"\"");
32         conn.nativeSQL("{?= call HEELO{t '10'}}");
33         conn.nativeSQL("TEST 'test'{OJ OUTER JOIN}'test'{oj OUTER JOIN}");
34         conn.nativeSQL("{call {ts '2001-01-10'}}");
35         conn.nativeSQL("call ? { 1: '}' };");
36         conn.nativeSQL("TEST TEST TEST TEST TEST 'TEST' TEST \"TEST\"");
37         conn.nativeSQL("TEST TEST TEST 'TEST' TEST \"TEST\"");
38         Statement stat = conn.createStatement();
39         stat.setEscapeProcessing(true);
40         stat.execute("CALL {d '2001-01-01'}");
41         stat.setEscapeProcessing(false);
42         try {
43             stat.execute("CALL {d '2001-01-01'} // this is a test");
44             error("expected error if setEscapeProcessing=false");
45         } catch(SQLException e) {
46             checkNotGeneralException(e);
47         }
48         checkFalse(conn.isClosed());
49         conn.close();
50         check(conn.isClosed());
51     }
52     
53
54     static final String JavaDoc[] PAIRS=new String JavaDoc[]{
55         "CREATE TABLE TEST(ID INT PRIMARY KEY)",
56         "CREATE TABLE TEST(ID INT PRIMARY KEY)",
57         
58         "INSERT INTO TEST VALUES(1)",
59         "INSERT INTO TEST VALUES(1)",
60         
61         "SELECT '{nothing}' FROM TEST",
62         "SELECT '{nothing}' FROM TEST",
63         
64         "SELECT '{fn ABS(1)}' FROM TEST",
65         "SELECT '{fn ABS(1)}' FROM TEST",
66         
67         "SELECT {d '2001-01-01'} FROM TEST",
68         "SELECT '2001-01-01' FROM TEST",
69         
70         "SELECT {t '20:00:00'} FROM TEST",
71         "SELECT '20:00:00' FROM TEST",
72         
73         "SELECT {ts '2001-01-01 20:00:00'} FROM TEST",
74         "SELECT '2001-01-01 20:00:00' FROM TEST",
75         
76         "SELECT {fn CONCAT('{fn x}','{oj}')} FROM TEST",
77         "SELECT CONCAT('{fn x}','{oj}') FROM TEST",
78         
79         "SELECT * FROM {oj TEST T1 LEFT OUTER JOIN TEST T2 ON T1.ID=T2.ID}",
80         "SELECT * FROM TEST T1 LEFT OUTER JOIN TEST T2 ON T1.ID=T2.ID ",
81         
82         "SELECT * FROM TEST WHERE '{' LIKE '{{' {escape '{'}",
83         "SELECT * FROM TEST WHERE '{' LIKE '{{' escape '{' ",
84                         
85         "SELECT * FROM TEST WHERE '}' LIKE '}}' {escape '}'}",
86         "SELECT * FROM TEST WHERE '}' LIKE '}}' escape '}' ",
87         
88         "{call TEST('}')}",
89         " call TEST('}') ",
90
91         "{?= call TEST('}')}",
92         " call TEST('}') ",
93
94         "{? = call TEST('}')}",
95         " call TEST('}') ",
96
97         "{{{{this is a bug}",
98         null,
99     };
100
101     void test(Connection conn, String JavaDoc original,String JavaDoc expected) throws Exception JavaDoc {
102         trace("original: <"+original+">");
103         trace("expected: <"+expected+">");
104         try {
105             String JavaDoc result=conn.nativeSQL(original);
106             trace("result: <"+result+">");
107             check(expected, result);
108         } catch(SQLException e) {
109             check(expected, null);
110             checkNotGeneralException(e);
111             trace("got exception, good");
112         }
113     }
114
115 }
116
Popular Tags