Hi,
I'm implementing a more specific version of SqlDataSourceServlet.
Right now, the only difference is that I've hardcoded the database
parameters into the Servlet (instead of getting them from the request)
and make the servlet load the Mysql JDBC driver at startup.
If I call the Datasource without a select , it returns well. ie:
var query = new google.visualization.Query('
http://localhost/mdata/
historic');
queryh.setQuery('where SKU="313');
queryh.send(drawHist);
but if I make a "select" query
queryh.setQuery('select Date , Price where SKU="313"');
the Servlet fails with an ugly error:
Nov 2, 2009 9:36:25 PM
com.google.visualization.datasource.query.parser.QueryBuilder
parseQuery
SEVERE: Parsing error: Encountered " "," ", "" at line 1, column
12.
Was expecting one
of:
<STRING_LITERAL> ...
<STRING_LITERAL> ...
<STRING_LITERAL> ...
<STRING_LITERAL> ...
<STRING_LITERAL> ...
<STRING_LITERAL> ...
and 20 more lines like those.
Evidently, the "," is the problem, because if i only make a query like
this:
queryh.setQuery('select Date where SKU="313"');
it works ok (but I need both columns to make an AnnotatedTimeLine).
Any clues why this is happening?
Below is my servlet class:
<code>
import javax.servlet.http.HttpServletRequest;
import com.google.visualization.datasource.Capabilities;
import com.google.visualization.datasource.DataSourceServlet;
import com.google.visualization.datasource.base.DataSourceException;
import com.google.visualization.datasource.datatable.DataTable;
import com.google.visualization.datasource.query.Query;
import com.google.visualization.datasource.util.SqlDataSourceHelper;
import
com.google.visualization.datasource.util.SqlDatabaseDescription;
public class HistoricServlet extends DataSourceServlet {
private static final long serialVersionUID = 1L;
public HistoricServlet() {
try {
Class.forName("com.mysql.jdbc.Driver").newInstance();
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public Capabilities getCapabilities() {
return Capabilities.SQL;
}
public DataTable generateDataTable(Query query, HttpServletRequest
request)
throws DataSourceException {
SqlDatabaseDescription dbDescription = new SqlDatabaseDescription(
"jdbc:mysql://localhost:3306/mybase",
"user",
"pass",
"Historic"
);
return SqlDataSourceHelper.executeQuery(query, dbDescription);
}
protected boolean isRestrictedAccessMode() {
return false;
}
}
</code>