package com.googlecode.sqlsheet;
import org.junit.Assert;
import org.junit.Test;
import java.sql.*;
import java.util.Date;
public class DriverTest {
@Test
public void testXlsSheetCRUD() throws Exception {
Class.forName("com.googlecode.sqlsheet.Driver");
Connection conn = DriverManager.getConnection("jdbc:xls:file:" + DriverTest.class.getResource("/test.xls").getFile());
Statement create = conn.createStatement();
create.executeUpdate("CREATE TABLE \"TEST_INSERT\"(\"COL1\" INT, COL2 VARCHAR(255), COL3 DATE)");
PreparedStatement write = conn.prepareStatement("INSERT INTO TEST_INSERT(COL1, \"COL2\", COL3) VALUES(?,?,?)");
for (int i = 0; i < 3; i++) {
write.setDouble(1, i);
write.setString(2, "Row" + i);
write.setDate(3, new java.sql.Date(new Date().getTime()));
write.execute();
}
processBaseResultset(conn, "SELECT * FROM \"TEST_INSERT\"");
Statement drop = conn.createStatement();
drop.execute("DROP TABLE TEST_INSERT");
drop.close();
create.close();
write.close();
conn.close();
}
@Test
public void testXlsSheetNameQuotes() throws Exception {
Class.forName("com.googlecode.sqlsheet.Driver");
Connection conn = DriverManager.getConnection("jdbc:xls:file:" + ClassLoader.getSystemResource("test.xls").getFile());
processBaseResultset(conn, "SELECT * FROM \"2009\"");
}
@Test
public void testXlsSheetNameNoQuotes() throws Exception {
Class.forName("com.googlecode.sqlsheet.Driver");
Connection conn = DriverManager.getConnection("jdbc:xls:file:" + ClassLoader.getSystemResource("test.xls").getFile());
processBaseResultset(conn, "SELECT * FROM SHEET1");
}
@Test
public void testXlsStreamSheetNameQuotes() throws Exception {
Class.forName("com.googlecode.sqlsheet.Driver");
Connection conn = DriverManager.getConnection("jdbc:xls:file:" + ClassLoader.getSystemResource("test.xls").getFile() + "?readStreaming=true");
processBaseStreamingResultset(conn, "SELECT * FROM \"2009\"");
}
@Test
public void testXlsStreamSheetNameNoQuotes() throws Exception {
Class.forName("com.googlecode.sqlsheet.Driver");
Connection conn = DriverManager.getConnection("jdbc:xls:file:" + ClassLoader.getSystemResource("test.xls").getFile() + "?readStreaming=true");
processBaseStreamingResultset(conn, "SELECT * FROM SHEET1");
}
@Test
public void testXlsxSheetNameQuotes() throws Exception {
Class.forName("com.googlecode.sqlsheet.Driver");
Connection conn = DriverManager.getConnection("jdbc:xls:file:" + ClassLoader.getSystemResource("test.xlsx").getFile());
processBaseResultset(conn, "SELECT * FROM \"2009\"");
}
@Test
public void testXlsxSheetNameNoQuotes() throws Exception {
Class.forName("com.googlecode.sqlsheet.Driver");
Connection conn = DriverManager.getConnection("jdbc:xls:file:" + ClassLoader.getSystemResource("test.xlsx").getFile());
processBaseResultset(conn, "SELECT * FROM SHEET1");
}
@Test
public void testXlsxStreamSheetNameQuotes() throws Exception {
Class.forName("com.googlecode.sqlsheet.Driver");
Connection conn = DriverManager.getConnection("jdbc:xls:file:" + ClassLoader.getSystemResource("test.xlsx").getFile() + "?readStreaming=true");
processBaseStreamingResultset(conn, "SELECT * FROM \"2009\"");
}
@Test
public void testXlsxStreamSheetNameNoQuotes() throws Exception {
Class.forName("com.googlecode.sqlsheet.Driver");
Connection conn = DriverManager.getConnection("jdbc:xls:file:" + ClassLoader.getSystemResource("test.xlsx").getFile() + "?readStreaming=true");
processBaseStreamingResultset(conn, "SELECT * FROM SHEET1");
}
@Test
public void testBugNo7() throws Exception {
Class.forName("com.googlecode.sqlsheet.Driver");
Connection conn = DriverManager.getConnection("jdbc:xls:file:" + ClassLoader.getSystemResource("bug7.xlsx").getFile() + "?readStreaming=true");
Statement stmt = conn.createStatement();
ResultSet results = stmt.executeQuery("SELECT * FROM bug7");
Assert.assertEquals(results.getMetaData().getColumnCount(), 13L);
Assert.assertEquals(results.next(), true);
Assert.assertEquals(results.next(), true);
Assert.assertEquals(results.getString("Zone ID"), results.getString(1));
conn = DriverManager.getConnection("jdbc:xls:file:" + ClassLoader.getSystemResource("bug7.xlsx").getFile() + "?readStreaming=no");
stmt = conn.createStatement();
results = stmt.executeQuery("SELECT * FROM bug7");
Assert.assertEquals(results.getMetaData().getColumnCount(), 13L);
Assert.assertEquals(results.next(), true);
Assert.assertEquals(results.next(), true);
Assert.assertEquals(results.getLong("Zone ID"), results.getLong(1));
}
@Test
public void testBugNo6() throws Exception {
Class.forName("com.googlecode.sqlsheet.Driver");
Connection conn = DriverManager.getConnection("jdbc:xls:file:" + ClassLoader.getSystemResource("test.xlsx").getFile() + "?readStreaming=true");
Statement stmt = conn.createStatement();
ResultSet results = stmt.executeQuery("SELECT * FROM SHEET1");
Assert.assertEquals(results.getMetaData().getColumnCount(), 3L);
ResultSetMetaData resultSetMetaData = results.getMetaData();
Assert.assertEquals("java.lang.Double", resultSetMetaData.getColumnTypeName(1));
Assert.assertEquals("java.lang.String", resultSetMetaData.getColumnTypeName(2));
Assert.assertEquals("java.util.Date", resultSetMetaData.getColumnTypeName(3));
}
private void processBaseResultset(Connection conn, String sql) throws SQLException {
Statement stmt = conn.createStatement();
ResultSet results = stmt.executeQuery(sql);
Assert.assertEquals(results.getMetaData().getColumnCount(), 3L);
Long count = 0L;
while (results.next()) {
Assert.assertEquals(Double.class, results.getObject(1).getClass());
Assert.assertEquals(String.class, results.getObject(2).getClass());
Assert.assertEquals(java.sql.Date.class, results.getObject(3).getClass());
count++;
}
Assert.assertEquals(count.longValue(), 3L);
results.close();
stmt.close();
conn.close();
}
private void processBaseStreamingResultset(Connection conn, String sql) throws SQLException {
Statement stmt = conn.createStatement();
ResultSet results = stmt.executeQuery(sql);
Assert.assertEquals(results.getMetaData().getColumnCount(), 3L);
Long count = 0L;
while (results.next()) {
Assert.assertEquals(Double.class, results.getObject(1).getClass());
Assert.assertEquals(String.class, results.getObject(2).getClass());
Assert.assertEquals(java.util.Date.class, results.getObject(3).getClass());
count++;
}
Assert.assertEquals(count.longValue(), 3L);
results.close();
stmt.close();
conn.close();
}
}