同是一段Page_Load里的代码.要提交Form时,才报System.NullReferenceException错误.

fuchunjie 2004-10-28 10:45:28
开发环境:Win2003+VisualStudio.net 2003+ASP.net(C#)+Access
问题描述:
1.我是把连接及操作Access放在DbWrapper.cs中的,它提供了getConn(),getDataReader(),ExecuteSql()等几个方法,每个aspx都直接调用DbWrapper.
2.我在getConn()返回的OleDbConnection时,已经把它打开,if (cn.State.toString()=="Closed") cn.Open(); return cn;
cn.State有哪几个取值?
3.XX.aspx中 我访问了getDataReader()并输出了记录,页面正确。但当点击XX.aspx上的提交按钮时,Page_load()中的代码报错误System.NullReferenceException.位置在while (dr.Read()) {
很明显,是访问数据库时出错了。我想问,到底出了什么错。

...全文
99 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
fuchunjie 2004-10-28
  • 打赏
  • 举报
回复
无奈.....高人都去哪了????


原来CSDN回答问题很积极的,现在有点难度的问题,就无人问津了。


哎....
fuchunjie 2004-10-28
  • 打赏
  • 举报
回复
private void Page_Load(object sender, System.EventArgs e)
{
//接收前端数据
string org_code=Request["org_code"];
string event_type=Request["event_type"];
int gv_curr_lang=int.Parse(Request["gv_curr_lang"]);

string MT_15=ar_public.ar_00_get_text(gv_curr_lang,15);
string MT_42=ar_public.ar_00_get_text(gv_curr_lang,42);
string MT_66=ar_public.ar_00_get_text(gv_curr_lang,66);
string MT_119=ar_public.ar_00_get_text(gv_curr_lang,119);
string MT_5=ar_public.ar_00_get_text(gv_curr_lang,5);
string MT_6=ar_public.ar_00_get_text(gv_curr_lang,6);

this.Label15.Text=MT_15;
this.Label42.Text=MT_42;
this.Label66.Text=MT_66;
this.Label119.Text=MT_119;
this.Button1.Text=MT_5;
this.Button2.Text=MT_6;

//if (!Page.IsPostBack) {
OleDbDataReader dr=dbWrapper.getDataReader("select * from orgs where org_code='"+org_code+"'");
while (dr.Read()){ //初始化输入筐
this.TextBox1.Text=dr["org_name"].ToString();
this.TextBox2.Text=(int.Parse("0"+dr["last_event_no"].ToString())+1)+"";
this.TextBox1.ReadOnly=true;
this.TextBox2.ReadOnly=true;
}
dr.Close();

ArrayList seg_code_list=new ArrayList();
ArrayList seg_title_list=new ArrayList();
ArrayList seg_detail_list=new ArrayList();
System.Collections.Hashtable data_field_ht=new Hashtable(); //存放字段,一个seg_code对应一个ArrayList的data_field

OleDbDataReader all_segment=dbWrapper.getDataReader("select * from event_type_segments left join segments on event_type_segments.segment_code=segments.segment_code where event_type="+event_type+" order by seg_order");

while (all_segment.Read()) //对所有 段落 循环
{

帖一段代码吧...当提交时,第一个while处报错。

另外一个问题,我若加上if (!Page.IsPostBack) { 则动态生成的服务器端控件 在Button提交后用this.FindControl()找寻不到。 屏蔽掉if (!Page.IsPostBack),这动态生成的服务器端控件就能通过this.FindControl()找到。并且值还是页面操作后的值,为什么?
baihecheng 2004-10-28
  • 打赏
  • 举报
回复
Page_load()里的代码是怎么写的!
fuchunjie 2004-10-28
  • 打赏
  • 举报
回复
OleDbConnection.State
属性值
ConnectionState 值的按位组合。默认值为 Closed。

实现
IDbConnection.State

备注
允许的状态更改包括:

使用连接对象的 Open 方法从 Closed 更改为 Open。
使用连接对象的 Close 方法或 Dispose 方法从 Open 更改为 Closed。
注意 调用 State 属性会增加应用程序的系统开销,因为每次调用都导致对打开的连接调用一次 OLE DB DBPROP_CONNECTIONSTATUS 属性。

refence MSDN....

问题依旧,请高人指点.
活靶子哥哥 2004-10-28
  • 打赏
  • 举报
回复
getDataReader()贴出来

62,074

社区成员

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

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

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

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