+<?xml version="1.0" encoding="UTF-8"?>\r
<classpath>\r
- <classpathentry kind="src" path="src/main/java"/>\r
- <classpathentry kind="src" path="src/main/resources" including="native/**|org/**" excluding="**/*.java"/>\r
- <classpathentry kind="src" path="src/test/java" output="target/test-classes"/>\r
- <classpathentry kind="output" path="target/classes"/>\r
- <classpathentry kind="var" path="M2_REPO/org/xerial/thirdparty/jdbc-api/1.4/jdbc-api-1.4.jar"/>\r
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>\r
- <classpathentry kind="var" path="M2_REPO/junit/junit/4.1/junit-4.1.jar"/>\r
- <classpathentry kind="var" path="M2_REPO/org/xerial/xerial-core/0.8.0/xerial-core-0.8.0.jar"/>\r
- <classpathentry kind="var" path="M2_REPO/org/antlr/antlr-runtime/3.0.1/antlr-runtime-3.0.1.jar"/>\r
- <classpathentry kind="var" path="M2_REPO/org/antlr/stringtemplate/3.1-b1/stringtemplate-3.1-b1.jar"/>\r
- <classpathentry kind="var" path="M2_REPO/xpp3/xpp3/1.1.4c/xpp3-1.1.4c.jar"/>\r
- <classpathentry kind="var" path="M2_REPO/org/xerial/thirdparty/nestedvm/1.0/nestedvm-1.0.jar"/>\r
- <classpathentry kind="var" path="M2_REPO/org/xerial/thirdparty/sqlitejdbc-nested/3.5.9/sqlitejdbc-nested-3.5.9.jar"/>\r
-</classpath>
\ No newline at end of file
+ <classpathentry kind="src" path="src/main/java"/>\r
+ <classpathentry excluding="**/*.java" including="native/**|org/**" kind="src" path="src/main/resources"/>\r
+ <classpathentry kind="src" output="target/test-classes" path="src/test/java"/>\r
+ <classpathentry kind="var" path="M2_REPO/org/xerial/thirdparty/jdbc-api/1.4/jdbc-api-1.4.jar"/>\r
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>\r
+ <classpathentry kind="var" path="M2_REPO/junit/junit/4.1/junit-4.1.jar"/>\r
+ <classpathentry kind="var" path="M2_REPO/org/xerial/xerial-core/0.8.0/xerial-core-0.8.0.jar"/>\r
+ <classpathentry kind="var" path="M2_REPO/org/antlr/antlr-runtime/3.0.1/antlr-runtime-3.0.1.jar"/>\r
+ <classpathentry kind="var" path="M2_REPO/org/antlr/stringtemplate/3.1-b1/stringtemplate-3.1-b1.jar"/>\r
+ <classpathentry kind="var" path="M2_REPO/xpp3/xpp3/1.1.4c/xpp3-1.1.4c.jar"/>\r
+ <classpathentry kind="var" path="M2_REPO/org/xerial/thirdparty/nestedvm/1.0/nestedvm-1.0.jar"/>\r
+ <classpathentry kind="var" path="M2_REPO/org/xerial/thirdparty/sqlitejdbc-nested/3.6.0/sqlitejdbc-nested-3.6.0.jar"/>\r
+ <classpathentry kind="output" path="target/classes"/>\r
+</classpath>\r
--- /dev/null
+//--------------------------------------
+// sqlite-jdbc Project
+//
+// SQLiteNestedTest.java
+// Since: Jul 17, 2008
+//
+// $URL$
+// $Author$
+//--------------------------------------
+package org.xerial.db.sql.sqlite;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.sql.Statement;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.sqlite.Function;
+import org.xerial.util.log.Logger;
+
+public class SQLitePureJavaTest
+{
+ private static Logger _logger = Logger.getLogger(SQLitePureJavaTest.class);
+
+ private Connection connection = null;
+
+ @Before
+ public void setUp() throws Exception
+ {
+ System.setProperty("sqlite.purejava", "true");
+ connection = null;
+ Class.forName("org.sqlite.JDBC");
+ // create a database connection
+ connection = DriverManager.getConnection("jdbc:sqlite::memory:");
+ }
+
+ @After
+ public void tearDown() throws Exception
+ {
+ if (connection != null)
+ connection.close();
+ }
+
+ @Test
+ public void query() throws ClassNotFoundException
+ {
+ _logger.debug(String.format("running in %s mode", SQLiteJDBCLoader.isNativeMode() ? "native" : "nested"));
+
+ try
+ {
+ Statement statement = connection.createStatement();
+ statement.setQueryTimeout(30); // set timeout to 30 sec.
+
+ statement.executeUpdate("create table person ( id integer, name string)");
+ statement.executeUpdate("insert into person values(1, 'leo')");
+ statement.executeUpdate("insert into person values(2, 'yui')");
+
+ ResultSet rs = statement.executeQuery("select * from person order by id");
+ while (rs.next())
+ {
+ // read the result set
+ int id = rs.getInt(1);
+ String name = rs.getString(2);
+ }
+ }
+ catch (SQLException e)
+ {
+ // if e.getMessage() is "out of memory", it probably means no
+ // database file is found
+ fail(e.getMessage());
+ }
+ }
+
+ @Test
+ public void function() throws SQLException
+ {
+ Function.create(connection, "total", new Function() {
+ @Override
+ protected void xFunc() throws SQLException
+ {
+ int sum = 0;
+ for (int i = 0; i < args(); i++)
+ sum += value_int(i);
+ result(sum);
+ }
+ });
+
+ ResultSet rs = connection.createStatement().executeQuery("select total(1, 2, 3, 4, 5)");
+ assertTrue(rs.next());
+ assertEquals(rs.getInt(1), 1 + 2 + 3 + 4 + 5);
+ }
+
+}