2

在我的代码中,我试图在我的代码中创建索引,并且由于不允许创建重复的索引,我想检查我的索引是否存在于我的 SQL CE 数据库中。

在 C# 代码中,我使用IDbCommandwith query运行查询,"SELECT * FROM INFORMATION_SCHEMA.INDEXES WHERE TABLE_NAME = 'mytablename'"所以如果有结果,我已经为此数据库创建了 INDEX。没有什么花哨。但是,当我运行它时,即使我知道我创建了索引,我也没有看到结果。

所以我尝试使用SQL Server Compact/SQLite Toolbox运行查询。我看到我有带有工具查询的索引。我认为我的 SQL 语法可能是错误的,所以我在"SELECT * FROM INFORMATION_SCHEMA.INDEXES"没有 WHERE 的情况下运行查询来比较我收到了多少结果。我看到 13 个结果与 12 个结果。显然缺少的是 mytablename。

有人知道为什么会出现这个奇怪的问题吗?如果这不能解决,如果有重复,我可以尝试 catch 和 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();
        }
    }
4

0 回答 0