在我的代码中,我试图在我的代码中创建INDEX,并且由于不允许创建重复的INDEX,我想检查我的SQLEX数据库中是否存在INDEX。
在C#代码中,我使用IDbCommand
使用查询"SELECT * FROM INFORMATION_SCHEMA.INDEXES WHERE TABLE_NAME = 'mytablename'"
运行查询,因此如果有结果,我已经为此数据库创建了INDEX。没有什么花哨。但是,当我运行它时,即使我知道我创建了索引,也没有看到结果。
所以我尝试使用SQL Server Compact/SQLite Toolbox运行查询。我看到我有INDEX与工具的查询。我认为我的SQL语法可能有误,所以我在没有WHERE的情况下运行查询"SELECT * FROM INFORMATION_SCHEMA.INDEXES"
来比较我收到的结果数量。我看到13个结果与12个结果。显然缺少的是mytablename。
有没有人知道为什么会出现这个奇怪的问题?如果这没有解决,我可以尝试catch并捕获是否有重复并忽略结果。但最好是,我想正确地捕捉Row是否存在。
我使用的C#代码如下。
DbProviderFactory factory = DbProviderFactories.GetFactory(provider);
using (DbConnection conn = factory.CreateConnection())
{
conn.ConnectionString = "xxxx";
try
{
conn.Open();
IDbCommand cmd = factory.CreateCommand();
cmd.Connection = conn;
cmd.CommandText = "SELECT * FROM INFORMATION_SCHEMA.INDEXES WHERE TABLE_NAME = 'mytablename'";
DbDataReader ddr = (DbDataReader)cmd.ExecuteReader();
ddr.Read();
}
catch (Exception ex)
{
}
finally
{
conn.Close();
}
}