急需解答!!!在线等,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\客户关系管理系统\客户关系管理系统\App_Code\EntityDA\UserInfoDA.cs:66
controls_AddUser.Button1_Click(Object sender, EventArgs e) in d:\毕设\crm\客户关系管理系统\客户关系管理系统\controls\AddUser.ascx.cs:42
System.Web.UI.WebControls.Button.OnClick(EventArgs e) +105
System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +107
System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +7
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +11
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +33
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1746
非常感谢!!!!
[解决办法]
你可以单步调试到这里,看
SqlHelper.ConnectionStringLocalTransaction是否有值。
另外看看
返回值是否为空,因为(int)null应该也要报这样的错的。
[解决办法]
SqlHelper.ConnectionStringLocalTransaction == null ?
没看到你在那给它赋值。