java如何检查表中是否已经存在索引?
如何检查表的列键_name中是否已有行
private boolean checkIndexExists(JdbcConnection connection,String indexName,String tableName) throws DatabaseException, SQLException {
boolean exists=false;
String searchStatement = "SHOW INDEXES FROM "+tableName;
ResultSet columnsRs;
Statement s = connection.createStatement();
columnsRs = s.executeQuery(searchStatement);
//CHECK IF THE INDEX ALREADY EXISTS
return exists;
}
# 1 楼答案
一种方法是查看结果集。您可以遍历表中的所有行,并检查Key_name的值是否等于indexName
# 2 楼答案
不要使用SHOW。这是为了显示简单的结果,对于任何类型的决策或计算都不是很好
使用计数:
如果没有可以计数的行,SQL COUNT将返回NULL,但是getInt将NULL解释为0,所以我们不需要通过这种方式检查NULL。另外,请注意,ResultSet是一个资源,应该在try-catch finally或(首选)try with resources中关闭,如图所示
根据您正在做的事情,只返回索引可能更有用:
SQL中还有EXISTS关键字,但它通常用在更大的语句中,对于这个用例来说会更复杂。但是,如果您试图插入新行并相应地设置Seq_in_索引,那么可以使用EXISTS在一个事务中完成所有操作