Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带有SQL计数函数的OleDBDataReader上的IndexOutOfRangeException(C#)_C#_Sql_Count_Oledb - Fatal编程技术网

带有SQL计数函数的OleDBDataReader上的IndexOutOfRangeException(C#)

带有SQL计数函数的OleDBDataReader上的IndexOutOfRangeException(C#),c#,sql,count,oledb,C#,Sql,Count,Oledb,下午好 我正在处理的一段代码有问题,它检查数据库中是否已经存在同名的数据项 下面的代码抛出一个IndexOutOfRangeException static int checkExists(String checkIf) { String connectionString = "provider=Microsoft.Jet.OLEDB.4.0;data source=" + @"ffmpegDB.mdb"; OleDbConnection connecti

下午好

我正在处理的一段代码有问题,它检查数据库中是否已经存在同名的数据项

下面的代码抛出一个IndexOutOfRangeException

static int checkExists(String checkIf)
    {
        String connectionString = "provider=Microsoft.Jet.OLEDB.4.0;data source=" + @"ffmpegDB.mdb";
        OleDbConnection connection = new OleDbConnection(connectionString);
        connection.Open();
        OleDbCommand command = connection.CreateCommand();           

        try
        {
            command.CommandText = checkIf;

            OleDbDataReader reader = command.ExecuteReader();

            reader.Read();
            try
            {
                result = (int)reader["Result"];
            }
            catch (InvalidOperationException ioe) { }

            reader.Close();
            connection.Close();
        }
        catch (FormatException Fe)
        {}

        return result;            
    }
…在这条线上

result = (int)reader["Result"];
该函数按如下方式执行:

if (checkExists("SELECT COUNT(*) AS 'Result' FROM Files WHERE Filename ='"+fileNames[i]+"' AND File_Directory ='"+directories[i]+"'")==0)
{

}

等等

这可能是OleDB的问题吗?它如何处理SQL语句? 也许读者是在逐字逐句地寻找“结果”专栏

我希望我已经提供了足够的信息

关于

使用

result=(int)reader[0];
使用


或者,您是否尝试过使用ExecuteScalar?跳过了整个数据读取器的事情


或者,您是否尝试过使用ExecuteScalar?跳过了整个数据读取器的事情


我想你可以试着做以下事情

    if (checkExists("SELECT COUNT(*) AS Result FROM Files WHERE Filename ='"+fileNames[i]+"' AND File_Directory ='"+directories[i]+"'")==0);//
reader.GetInt32(reader.GetOrdinal("Result"));


我想你可以试着做以下事情

    if (checkExists("SELECT COUNT(*) AS Result FROM Files WHERE Filename ='"+fileNames[i]+"' AND File_Directory ='"+directories[i]+"'")==0);//
reader.GetInt32(reader.GetOrdinal("Result"));


您是否在查询分析器中尝试过SQL语句

您是否在查询分析器中尝试过SQL语句

问题已经解决,但我注意到了其中的联系。看起来很有用。谢谢,苏已经解决了,但我注意到了链接。看起来很有用。谢谢,这很有效。事实证明,有成百上千种方法可以完成一个过程。同样,这也很有效。事实证明,有数百种方法可以完成一个过程
    if (checkExists("SELECT COUNT(*) AS Result FROM Files WHERE Filename ='"+fileNames[i]+"' AND File_Directory ='"+directories[i]+"'")==0);//
reader.GetInt32(reader.GetOrdinal("Result"));
    if (checkExists("SELECT COUNT(*) FROM Files WHERE Filename ='"+fileNames[i]+"' AND File_Directory ='"+directories[i]+"'")==0); //
reader.GetInt32(0);// use this