/** * Constructor. * * @param name Name of the table in the db. * @param db Database to use. */ public Table(String name, SQLDB db) { this.tableName = name; this.db = db; this.supportsMySQLQueries = db != null && db.getType().supportsMySQLQueries(); }
protected void addColumn(String tableName, String columnInfo) { db.execute("ALTER TABLE " + tableName + " ADD " + (dbType.supportsMySQLQueries() ? "" : "COLUMN ") + columnInfo); }
protected boolean hasTable(String tableName) { boolean secondParameter; String sql; if (dbType == DBType.H2) { sql = "SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME=?"; secondParameter = false; } else if (dbType.supportsMySQLQueries()) { sql = "SELECT * FROM information_schema.TABLES WHERE table_name=? AND TABLE_SCHEMA=? LIMIT 1"; secondParameter = true; } else { sql = "SELECT tbl_name FROM sqlite_master WHERE tbl_name=?"; secondParameter = false; } return query(new QueryStatement<Boolean>(sql) { @Override public void prepare(PreparedStatement statement) throws SQLException { statement.setString(1, tableName); if (secondParameter) { statement.setString(2, db.getConfig().get(DatabaseSettings.MYSQL_DATABASE)); } } @Override public Boolean processResults(ResultSet set) throws SQLException { return set.next(); } }); }
protected boolean hasColumn(String tableName, String columnName) { if (dbType.supportsMySQLQueries()) { String query;
db.execute(statement); try { if (dbType.supportsMySQLQueries()) { db.execute("SET foreign_key_checks = 0"); db.execute(statement); } finally { if (dbType.supportsMySQLQueries()) { db.execute("SET foreign_key_checks = 1");