Skip to content
This repository has been archived by the owner on Apr 17, 2018. It is now read-only.

Commit

Permalink
[do_sqlite3] implemented statementToString for JDBC driver
Browse files Browse the repository at this point in the history
  • Loading branch information
rsim committed Jul 20, 2009
1 parent d48f53a commit 1763a8d
Showing 1 changed file with 38 additions and 0 deletions.
@@ -1,7 +1,9 @@
package do_sqlite3;

import java.lang.reflect.Field;
import java.io.IOException;
import java.math.BigDecimal;
import java.sql.Statement;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
Expand Down Expand Up @@ -143,4 +145,40 @@ public String quoteString(String str) {
return quotedValue.toString();
}

private String replace(String sql, Object param)
{
return sql.replaceFirst("[?]", param.toString());
}

private String replace(String sql, String param)
{
return sql.replaceFirst("[?]", "'" + param.toString() + "'");
}

@Override
public String statementToString(Statement s)
{
try {
Class c = Class.forName("org.sqlite.Stmt");
Field sqlField = c.getDeclaredField("sql");
sqlField.setAccessible(true);
String sql = sqlField.get(s).toString();
Field batchField = c.getDeclaredField("batch");
batchField.setAccessible(true);
Object[] batch = (Object[]) batchField.get(s);
int index = 0;
for (Object param : batch) {
if (param instanceof String)
sql = replace(sql, param.toString());
else
sql = replace(sql, param);
}
return sql;
}
catch(Exception e) {
// just fall to the toString of the PreparedStatement
return s.toString();
}
}

}

0 comments on commit 1763a8d

Please sign in to comment.