asp.net - ExecuteScalar 抛出 NullReferenceException

标签 asp.net sql-server

此代码在调用 ExecuteScalar 时抛出 NullReferenceException:

selectedPassengerID = 0;

//SqlCommand command = GenericDataAccess.CreateCommand();


// 2nd test
string connectionString = "";
SqlConnection conn;

connectionString = ConfigurationManager.
    ConnectionStrings["ConnST-MHM"].ConnectionString;
conn = new SqlConnection(connectionString);
SqlCommand command = new SqlCommand();
command.CommandType = CommandType.StoredProcedure ;
command.Connection = conn;
command.CommandText = "SearchForPassenger";

SqlParameter param;

param = command.CreateParameter();
param.ParameterName = "@name";
param.Value = pName; // Session[""];
param.DbType = DbType.String;
command.Parameters.Add(param);

param = command.CreateParameter();
param.ParameterName = "@flightDate";
param.Value = date; 
param.DbType = DbType.String;
command.Parameters.Add(param);

param = command.CreateParameter();
param.ParameterName = "@ticketNo";
param.Value = ticketNumber; 
param.DbType = DbType.Int32;
command.Parameters.Add(param);

int item;

command.Connection.Open();
item = (int)command.ExecuteScalar();

最佳答案

我已将大部分 SQL 逻辑封装在 DAL 中。其中一种 DAL 方法使用以下逻辑提取标量整数。它可能适合你:

  object temp = cmnd.ExecuteScalar();
  if ((temp == null) || (temp == DBNull.Value)) return -1;
  return (int)temp;

我知道您在上面输入了很多代码,但我认为这确实是您问题的本质。祝你好运!

关于asp.net - ExecuteScalar 抛出 NullReferenceException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/559632/

相关文章:

sql - 停止触发器更改scope_identity

c# - SQL Server 2008 + C# + Inno 安装程序

sql - 我可以从表中选择一组行并将其直接插入到一个表或 SQL 中的同一个表中吗?

sql - 如何在插入期间使用标识作为列值

asp.net - 使文本框不可编辑

c# - 如何允许对 gridview 进行排序?

asp.net - 在模板化控件中实现级联 DropDownList 绑定(bind)

asp.net - 在循环期间查找 ASP.NET 控件

c# - GridView 到 Excel

sql-server - SQL 返回月薪而不是年薪并四舍五入到小数点后两位