.Net基本的添加修改

丿渎灬魂 2011-07-08 11:36:28
做了个添加修改,外键那块错误

User类:
public int UserId { get; set; }//用户编号

public string UserName { get; set; } //用户名,登录用。

public string UserPassword { get; set; } // 密码

public string UserSex { get; set; }//性别

public string UserPhone { get; set; }// 联系电话

public int Charm { get; set; } // 魅力值,通过好友印象投票所得

public Groggery Groggery { get; set; }// 外键对象


插入修改语句:



/// <summary>
/// 用户注册
/// </summary>
/// <param name="user"></param>
/// <returns></returns>
public bool AddUser(User user)
{
string sql = "insert into Users values (@UserName,@UserPassword,@UserSex,@UserPhone,@Charm,@GroggeryId,@UserState,@UserImage,@Number)";
return DBHelper.GetExcuteNonQuery(sql,
DBHelper.CreateParameter("@UserName", SqlDbType.NVarChar, user.UserName),
DBHelper.CreateParameter("@UserPassword", SqlDbType.NVarChar, user.UserPassword),
DBHelper.CreateParameter("@UserSex", SqlDbType.NVarChar, user.UserSex),
DBHelper.CreateParameter("@UserPhone", SqlDbType.NVarChar, user.UserPhone),
DBHelper.CreateParameter("@Charm", SqlDbType.Int, user.Charm),
DBHelper.CreateParameter("@GroggeryId", SqlDbType.Int, user.Groggery.GroggeryId),
DBHelper.CreateParameter("@UserState", SqlDbType.Int, user.UserState),
DBHelper.CreateParameter("@UserImage", SqlDbType.NVarChar, user.UserImage),
DBHelper.CreateParameter("@Number", SqlDbType.Int, user.Number)
) > 0;
}



/// <summary>
/// 修改用户信息
/// </summary>
/// <param name="user"></param>
/// <returns></returns>
public bool UpdateUserStateById(User user)
{

StringBuilder sql = new StringBuilder();

sql.Append("UPDATE USERS SET ");
sql.Append("UserName=@UserName, ");
sql.Append("UserPassword=@UserPassword, ");
sql.Append("UserSex=@UserSex, ");
sql.Append("UserPhone=@UserPhone, ");
sql.Append("Charm=@Charm, ");
sql.Append("GroggeryId=@GroggeryId, ");
sql.Append("UserState=@UserState, ");
sql.Append("UserImage=@UserImage, ");
sql.Append("number=@Number ");
sql.Append("where UserId=@UserId");
SqlParameter[] param ={
new SqlParameter("@UserName",SqlDbType.NVarChar),
new SqlParameter("@UserPassword",SqlDbType.NVarChar),
new SqlParameter("@UserSex",SqlDbType.NVarChar),
new SqlParameter("@UserPhone",SqlDbType.NVarChar),
new SqlParameter("@Charm",SqlDbType.Int),
new SqlParameter("@GroggeryId",SqlDbType.Int),
new SqlParameter("@UserState",SqlDbType.Int),
new SqlParameter("@UserImage",SqlDbType.NVarChar),
new SqlParameter("@Number",SqlDbType.Int),
new SqlParameter("@UserId",SqlDbType.Int)
};
param[0].Value = user.UserId;
param[1].Value = user.UserName;
param[2].Value = user.UserPassword;
param[3].Value = user.UserSex;
param[4].Value = user.UserPhone;
param[5].Value = user.Charm;
param[6].Value = user.Groggery.GroggeryId;
param[7].Value = user.UserState;
param[8].Value = user.UserImage;
param[9].Value = user.Number;

return DBHelper.GetExcuteNonQuery(sql.ToString(), param) > 0;

}


页面报错,未将对象引用到实例.


protected void Button1_Click(object sender, EventArgs e)
{
user.UserName = this.txtUserName.Text;
user.UserPassword = this.txtUserPassword.Text;
user.UserSex = this.txtUserSex.Text;
user.UserPhone = this.txtUserPhone.Text;
user.Charm = 0;
//user.Groggery.GroggeryId = this.DropDownList1.SelectedItem.Value;
user.Groggery.GroggeryId = 100;
user.UserState = 0;
user.UserImage = "null.jpg";
user.Number = 0;
if (um.AddUser(user))
{
Response.Write("1," + user.UserId);
}
else
{
Response.Write("0");
}

}



各位大虾帮我看看。 哪里需要修改写. 还是别的什么问题。
...全文
689 29 打赏 收藏 转发到动态 举报
写回复
用AI写文章
29 条回复
切换为时间正序
请发表友善的回复…
发表回复
bbs_521 2011-07-13
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 jy02349551 的回复:]

很明显,user没有实例化。
看看user有没有new
[/Quote]
潇洒王子 2011-07-12
  • 打赏
  • 举报
回复
拿分走人
月影 2011-07-12
  • 打赏
  • 举报
回复
技术落后了。
sp951 2011-07-11
  • 打赏
  • 举报
回复
这种引用类型错误:System.NullReferenceException

user.Groggery.GroggeryId

这里3个对象,有至少一个为空。
子夜__ 2011-07-10
  • 打赏
  • 举报
回复
先new 一个对象

然后在赋值

在使用这个对象。
--缪军-- 2011-07-09
  • 打赏
  • 举报
回复
异常堆栈信息已经说得很清楚了,楼主你视而不见:
System.NullReferenceException

User.Groggery为null,
此时这个对象就叫做: "没有实例化的对象"
所以引用User.Groggery的属性就是:"引用没有实例化的对象"
呆子罗 2011-07-09
  • 打赏
  • 举报
回复

protected void Button1_Click(object sender, EventArgs e)
{
user.UserName = this.txtUserName.Text;
user.UserPassword = this.txtUserPassword.Text;

//你这里的user实体类,只给9个属性赋值,插入操作里面有10个字段,不报错才怪!!!!!

@UserId呢?传进去没?这个对应字段是否允许为空?
专心做码农 2011-07-08
  • 打赏
  • 举报
回复
不要告诉我 你把user实例到全局了
不懂 2011-07-08
  • 打赏
  • 举报
回复
很明显,user没有实例化。
看看user有没有new
qq346127416 2011-07-08
  • 打赏
  • 举报
回复
哪行出的错
  • 打赏
  • 举报
回复
加断点,自己调试
senyi168 2011-07-08
  • 打赏
  • 举报
回复
看不出来,再调调吧!
Ayanamikula 2011-07-08
  • 打赏
  • 举报
回复
调试下看看
DataBox-MDX 2011-07-08
  • 打赏
  • 举报
回复
最好的办法是啥知道把!单步调式!
随心录123 2011-07-08
  • 打赏
  • 举报
回复
看看 你数据库里面 是不是有不允许为空的字段。然后检查调试 你输入的字段是不是 有为空的。
一般 建议你测试调试的时候。 数据库里面 除了 ID 其他都为空。
路人甲cw 2011-07-08
  • 打赏
  • 举报
回复
user.Groggery.GroggeryId = 100;
你在使用user.Groggery实例字段时,要先将它关联到对象才可以对其进行操作,而你此时的user.Groggery是null,由构造函数初始化的!所以你需要先new一个Groggery再赋给user.Groggery
丿渎灬魂 2011-07-08
  • 打赏
  • 举报
回复
好像还是有错啊。 错误还在老地方.
skylee 2011-07-08
  • 打赏
  • 举报
回复
Groggery g=new Groggery();
user.Groggery=g;
不懂 2011-07-08
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 stylewang0529 的回复:]
引用 17 楼 jy02349551 的回复:

user.Groggery这个没有实例化吧?


这个要怎么实例化?

[/Quote]

public Groggery Groggery { get; set; }

改成

private Groggery groggery = new Groggery();

public Groggery Groggery
{
get { return groggery; }
set { groggery = value; }
}
丿渎灬魂 2011-07-08
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 jy02349551 的回复:]

user.Groggery这个没有实例化吧?
[/Quote]

这个要怎么实例化?
加载更多回复(8)

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧