带有SQL计数函数的OleDBDataReader上的IndexOutOfRangeException(C#)
下午好 我正在处理的一段代码有问题,它检查数据库中是否已经存在同名的数据项 下面的代码抛出一个IndexOutOfRangeException带有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
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