ExecuteScalar在服务器上不起作用

时间:2020-03-06 14:57:04  来源:igfitidea点击:

该应用程序使用Oracle DataAccess版本。 1.1. ,VS 2008,.Net Framework 3.5 w / SP1

OracleConnection connection = new OracleConnection(ConnectionStringLogon);
connection.Open();

OracleParameter selectParam = new OracleParameter(":applicationName", OracleDbType.Varchar2, 256);
selectParam.Value = applicationName;

if (connection.State != ConnectionState.Open)
    connection.Open();

OracleCommand cmd = new OracleCommand();

cmd.Connection = connection;
cmd.CommandText = "Select ApplicationId from Applications where AppName = 'appName'";
cmd.CommandType = CommandType.Text;

if (selectParam != null)
{
        cmd.Parameters.Add(selectParam);
}
object lookupResult = cmd.ExecuteScalar();
cmd.Parameters.Clear();

if (lookupResult != null)

该过程在对象lookupResult = cmd.ExecuteScalar();上失败。出现此错误:

事件类型:错误
事件源:应用程序日志
事件类别:无
事件ID:9961
日期:2008年9月30日
时间:下午4:42:11
用户:N / A
电脑:Server15
描述:
System.NullReferenceException:对象引用未设置为对象的实例。
在Oracle.DataAccess.Client.OracleCommand.ExecuteReader处(布尔重新查询,布尔fillRequest,CommandBehavior行为)
在Oracle.DataAccess.Client.OracleCommand.ExecuteReader()
在Oracle.DataAccess.Client.OracleCommand.ExecuteScalar()
在OracleMembershipProvider.cs中的Membership.OracleMembershipProvider.GetApplicationId(String applicationName,Boolean createIfNeeded)处:1626行

我已经从我可以想到的各个角度进行了研究……基本上,无论我如何包装它,Execute都会失败。

解决方案

我注意到CommandText不包含指定的参数":applicationName"

这不是" ExecuteReader"中的错误。执行查询时出错... applicationName是否为null?