我是Vaadin的新手并且一直在尝试使用SqlContainer。我设法让mysql数据库连接正常工作。这是连接和容器代码:
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服务器。
答案 0 :(得分:0)
现在已经解决了!问题不在于Vaadin SqlContainer。我没有意识到由于MYSQL上的默认整理,比较不区分大小写。