未将对象引用设置到对象的实例,困在这里2个小时了!

xiongwei_1987 2009-12-17 10:11:44
public partial class HuaJiaoForm : Form
{
//BingRen bingren=null;
MainForm mainform;
public HuaJiaoForm(MainForm mainform)
{
InitializeComponent();
this.mainform = mainform;
}

private void button4_Click(object sender, EventArgs e)
{
string name = this.textBox1.Text;
string id = this.textBox2.Text;

if (HuaJiaDao.JianCeShenFen(name, id))
{

BingRen bingren;

this.label11.Text = "ok!";
this.label11.ForeColor = Color.Blue;
bingren = HuaJiaDao.QiTaXinXi(name, id);
this.textBox3.Text = bingren.Feiyongleixing;//在这里总是显示未将对象引用设置到对象的实例
this.textBox9.Text = bingren.Yaopinleixing;
}
else
{
this.label11.Text = "-_-!";
this.label11.ForeColor = Color.Red;
}
}

下边的是dao包


public static BingRen QiTaXinXi(string name, string id)
{


BingRen bingren = null;

try
{
SqlConnection conn = Connect.getConnection();
conn.Open();
string sql = string.Format("select cid,cname,pid,feiyongleixing,yaopinleixing,numberid from 临时挂号表 where cname={0} and numberid={1}", name, id);
SqlCommand command = new SqlCommand(sql, conn);
SqlDataReader reader = command.ExecuteReader();
reader.Read();
bingren = new BingRen(int.Parse(reader[0].ToString()), reader[1].ToString(), int.Parse(reader[2].ToString()), reader[3].ToString(), reader[4].ToString(), reader[5].ToString());
if (conn != null)
{
conn.Close();
}
}
catch
{


}


return bingren;
}

各位希望帮忙,我是哪里错了,我发现我变成总是犯这个毛病,总是实例化问题困扰我,这个说明我的弱点在哪里,我感觉我函数部分没有学习明白参数有点能不清楚,该写那些,往各位指教
...全文
192 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
HELLOWORDC 2009-12-17
  • 打赏
  • 举报
回复
你应该再在this.textBox3.Text = bingren.Feiyongleixing;//在这里总是显示未将对象引用设置到对象的实例
this.textBox9.Text = bingren.Yaopinleixing;
}
前加一个if(bingren!=null)
TheLastSmile 2009-12-17
  • 打赏
  • 举报
回复
QiTaXinXi(string name, string id)

在这个方法里面设置一个断点看看
或者


try
{
SqlConnection conn = Connect.getConnection();
conn.Open();
// 下面代码省略
}
catch
{
bingren = new BingRen(); // 构造一个空对象
}


然后取值的时候 判断里面的属性值
HELLOWORDC 2009-12-17
  • 打赏
  • 举报
回复
一般出现“未将对象引用设置到对象的实例”的问题,是因为对象的实例为空,为什么为空呢?是因为调用函数 bingren = HuaJiaDao.QiTaXinXi(name, id); 出现异常了,你函数在QiTaXinXi(string name, string id) 的CATCH里加入MESSAGEBOX("是不是出现异常了?")。再运行就可以得到证实了。为什么出现异常呢?是因为你的查询语句不对,string sql = string.Format("select cid,cname,pid,feiyongleixing,yaopinleixing,numberid from 临时挂号表 where cname={0} and numberid={1}", name, id);

cname={0} and numberid={1}应该加上单引号,应为cname='{0}' and numberid='{1}'


你试试?


【原创家庭记账簿1.2.5,简单实用,通俗易懂,欢迎工薪阶层、家庭主妇下载使用 http://download.csdn.net/source/1900400】


wuyq11 2009-12-17
  • 打赏
  • 举报
回复
bingren = HuaJiaDao.QiTaXinXi(name, id);
this.textBox3.Text = bingren.Feiyongleixing两行设置断点,F5运行查看
wuyq11 2009-12-17
  • 打赏
  • 举报
回复
bingren = HuaJiaDao.QiTaXinXi(name, id);
返回的为null
if(bingren!=null)
{
}
我姓区不姓区 2009-12-17
  • 打赏
  • 举报
回复
调试是做开发的基本,加断点,按F5,运行到断点处程序就会停下来
wiki14 2009-12-17
  • 打赏
  • 举报
回复
设置断点,按F11.
xiongwei_1987 2009-12-17
  • 打赏
  • 举报
回复
我问一下各位,如何调试代码,本人基础不是很好
xiongwei_1987 2009-12-17
  • 打赏
  • 举报
回复
谢谢1楼,可以了!没加单引号!!!!!!!!!!!
silentwins 2009-12-17
  • 打赏
  • 举报
回复
肯定bingren.Feiyongleixing没有被赋值,楼主要学会调试代码
xiongwei_1987 2009-12-17
  • 打赏
  • 举报
回复
麻烦给我写一个正确的好吗?谢谢!
wartim 2009-12-17
  • 打赏
  • 举报
回复
string sql = string.Format("select cid,cname,pid,feiyongleixing,yaopinleixing,numberid from 临时挂号表 where cname=\"{0}\" and numberid={1}", name, id);

发生异常了,但异常被你吃掉了,bingren 就返回开始的null

111,121

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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