为什么SQL查询和DbDataReader之间的SELECT结果不同Read()

时间:2016-09-15 21:43:21

标签: c# sql select sql-server-ce idbcommand

在我的代码中,我试图在我的代码中创建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();
        }
    }

0 个答案:

没有答案