日期:2014-05-18  浏览次数:20868 次

急需解答!!!在线等,C#未将对象引用设置到对象的实例
代码如下:
using System;
using System.Data;
using System.Text;
using System.Data.SqlClient;

public class UserInfoDA
{
  //定义常量表示字段名称或SQL语句。
  private const string SQL_INSERT_USERINFO = "INSERT INTO userinfo VALUES(@cityid)";

  private const string PARM_USER_CITYID = "@cityid";
  private const string PARM_USER_CITY = "@city";
  private const string SQL_SELECT_CITYNAME = "SELECT cityid FROM city WHERE cityname=@city";

  public UserInfoDA()
{
}
  public bool InsertUser(UserInfoEntity user)
  {
  StringBuilder strSQL = new StringBuilder();
  SqlParameter[] userParms = GetParameters();
  SqlCommand cmd = new SqlCommand();
  //获取城市的ID
  int cityid = GetCityID(user.City);

  userParms[9].Value = cityid;

  //遍历所有参数,并将参数添加到SqlCommand命令中
  foreach (SqlParameter parm in userParms)
  cmd.Parameters.Add(parm);

  //获取数据库的连接字符串
  using (SqlConnection conn = new SqlConnection(SqlHelper.ConnectionStringLocalTransaction))
  {
  strSQL.Append(SQL_INSERT_USERINFO);
  //打开数据库连接,执行命令
  conn.Open();
  //设置Sqlcommand命令的属性
  cmd.Connection = conn;
  cmd.CommandType = CommandType.Text;
  cmd.CommandText = strSQL.ToString();
  //执行添加的SqlCommand命令
  int val = cmd.ExecuteNonQuery();
  //清空SqlCommand命令中的参数
  cmd.Parameters.Clear();
  //判断是否添加成功,注意返回的是添加是否成功,不是影响的行数
  if (val > 0)
  return true;
  else
  return false;
  }
  }
  #region 私有方法-获取ID
  /// <summary>
  /// 获取城市ID的方法(私有方法)
  /// </summary>
  /// <param name="cityname">城市名称</param>
  /// <returns>该城市的ID</returns>
  private int GetCityID(string cityname)
  {
  int cityid = 0 ;

  //创建新参数并给参数赋值,用来指定城市名称
  SqlParameter parm = new SqlParameter(PARM_USER_CITY, SqlDbType.NVarChar, 20);
  parm.Value = cityname;

  //调用SqlHelper访问组件的方法返回第一行第一列的值
  cityid = (int)SqlHelper.ExecuteScalar(SqlHelper.ConnectionStringLocalTransaction, CommandType.Text, SQL_SELECT_CITYNAME, parm);

  return cityid;
  }

错误提示:


未将对象引用设置到对象的实例。 
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 

异常详细信息: System.NullReferenceException: 未将对象引用设置到对象的实例。

源错误: 


行 117:
行 118: //调用SqlHelper访问组件的方法返回第一行第一列的值
行 119: cityid = (int)SqlHelper.ExecuteScalar(SqlHelper.ConnectionStringLocalTransaction, CommandType.Text, SQL_SELECT_CITYNAME, parm);
行 120:
行 121: return cityid;
 

源文件: d:\毕设\crm\客户关系管理系统\客户关系管理系统\App_Code\EntityDA\UserInfoDA.cs 行: 119 

堆栈跟踪: 


[NullReferenceException: 未将对象引用设置到对象的实例。]
  UserInfoDA.GetCityID(String cityname) in d:\毕设\crm\客户关系管理系统\客户关系管理系统\App_Code\EntityDA\UserInfoDA.cs:119
  UserInfoDA.InsertUser(UserInfoEntity user) in d:\毕设\crm\客户关系管理系统\客户关系管理系统\Ap