0
我是Vaadin的新手,一直在尝试使用SqlContainer。我设法让mysql数据库连接工作。这里是连接和容器代码:这样的容器上SqlContainer过滤器区分大小写Vaadin
import java.io.Serializable;
import java.sql.SQLException;
import com.vaadin.data.util.sqlcontainer.SQLContainer;
import com.vaadin.data.util.sqlcontainer.connection.JDBCConnectionPool;
import com.vaadin.data.util.sqlcontainer.connection.SimpleJDBCConnectionPool;
import com.vaadin.data.util.sqlcontainer.query.TableQuery;
import com.vaadin.data.util.sqlcontainer.query.generator.filter.QueryBuilder;
import com.vaadin.data.util.sqlcontainer.query.generator.filter.StringDecorator;
public class DatabaseHelper implements Serializable {
private JDBCConnectionPool connectionPool = null;
private SQLContainer credentialContainer= null;
public DatabaseHelper() {
initConnectionPool();
}
private void initConnectionPool() {
try {
Class.forName("com.mysql.jdbc.Driver");
connectionPool = new SimpleJDBCConnectionPool(
"com.mysql.jdbc.Driver",
"jdbc:mysql://localhost:3306/vaadin", "root", "mysqlpass",
2, 10);
initContainers();
} catch (Exception e) {
e.printStackTrace();
}
}
private void initContainers() {
try {
/* TableQuery and SQLContainer for personaddress -table */
QueryBuilder.setStringDecorator(new StringDecorator("`","`"));
TableQuery q1 = new TableQuery("credentials", connectionPool);
q1.setVersionColumn("version");
credentialContainer= new SQLContainer(q1);
} catch (SQLException e) {
e.printStackTrace();
}
}
public SQLContainer getcredentialContainer(){
return credentialContainer;
}
}
然后,我已经使用的过滤器:
credentialcontainer.removeAllContainerFilters();
credentialcontainer.addContainerFilter("username", username.getValue(), false, true);
然而,问题是,我注意到,过滤器,甚至忽略大小写当我将它设置为ignoreCase参数为false时。
任何人都知道这是一个错误还是我做错了什么? 注意:我正在使用OS X并运行本地MYSQL服务器。
现在已解决! 问题不在于Vaadin SqlContainer。我没有意识到由于MYSQL的默认排序,比较是不区分大小写的。 – Thinker 2013-04-21 02:58:58