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