未将对象引用设置到对象的实例

未将对象引用设置到对象的实例,第1张

相信几乎所有学过aspnet的朋友都遇到过这个问题:未将对象引用设置到对象的实例。百分网我整理了未将对象引用设置到对象的实例的原因和解决方法,希望大家有所收获!

未将对象引用设置到对象的实例的原因

一、数据库方面

1、ViewState 对象为Null。

2、DateSet 空。

3、sql语句或Datebase的原因导致DataReader空。

4、声明字符串变量时未赋空值就应用变量。

5、未用new初始化对象。

6、Session对象为空。

7、对控件赋文本值时,值不存在。

8、使用RequestQueryString()时,所获取的对象不存在,或在值为空时未赋初始值。

9、使用FindControl时,控件不存在却没有做预处理。

10、重复定义造成未将对象引用设置到对象的实例错误

二、应用程序方面

(1)所设置的变量为空值或没有取到值,一般出现在传递参数的时候出现这个问题,也会在使用DataGrid或gridview或datalist等数据控件时出现

(2)控件名称与codebehind里面的没有对应

(3)未用new初始化对象

(4)在程序中所引用的控件不存在

解决方法:

(1)使用trycatchfinally捕捉错误,或直接用responsewrite()输出所取的'变量值

(2)查看代码中是否存在未初始化的变量

三、数据库连接

SqlConnectionOpen 未将对象引用设置到对象的实例

在使用VS2003开发 ASPNET程序时候 有时候 *** 作 SqlConnection对象的Open()方法时候会出现

未将对象引用设置到对象的实例。

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

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

源错误:

。。。。

connOpen();

跟踪调试也肯定可以确定 对conn进行new *** 作 但是程序经常在这个地方报错,但是有时候重启服务器或者重启IIS有能正常使用了。 怎么调试也找不到问题 那么这个时候可能是你本机上安装的NET FRAMEEWORK 框架有问题,可能没有没有安装SP11补丁

需要打NETFRAMEEWORK11 SP1的补丁,到微软官方网站下载安装后就好了。

四、一般出现NullReferenceException异常的情况

1、对象所在的命名空间没有引用

2、对象没有实例化

3、出现异常,实例化失败对象为 null

五、IIS

当应用程序的用户访问量超过它能承受的范围之后,就会出错。

改善你的程序,使用缓存,尽量减少与数据库交互的次数。

六、查看是否重置了DataSet引用

请大家好好查查自己的代码,是不是在其他地方重新引用了,在DataSet被设置成全局对象也会出现这种错误提示。

七、最后

甚至,仅仅因为网站里面DAL的dll文件失效,业务层实例化不了IDAL里面的对象也会出错。

当你发现所有的方法不行时,打上netframework的补丁

未将对象引用设置到对象的实例的解决方法

为每个可疑的地方添加监视,起初以为是sql语句写错了,查了几遍,换用sql语句还是报同样的错误。根据google出来的结果,提到对象重定义会引起这样的结果。根据这一提示,替换掉页面级全局对象,总算搞定了。

class DBOper{

/构造函数没有函数体

c#写的 一系列对数据库 *** 作方法

}

最初为了省事,尽量少声明对象,只在全局声明了一个private DBOper db=new DBOper(),在不同方法里面调用该对象的方法,以避免为其定义而造成内存浪费。后来代码重构,在编译的时候并未报错。但是当运行的时候,就出现” NullReferenceException: 未将对象引用设置到对象的实例“。结果就因它而搞了几个小时。后来根据google的结果,将不同方法中使用到的DBOper对象一一重定义为局部变量(一个方法里面只定义一个DBOper对象,多次调用其方法均正常),去掉全局的private变量。再运行的时候就正常了。

至于为什么将自定义的对象提成为class为private在不同的方法里面使用后而出现这样的问题,现在还不是很清楚

猜你感兴趣:

↓↓↓ 下页更多"C#未将对象引用设置到对象的实例解决办法" ↓↓↓

有一个非常好的系统存储过程会帮助你分析数据库的依赖关系,它就是:sp_depends。这个过程会指出哪些数据库对象依赖于对应的数据库对象,和哪些数据库对象为对应的数据库对象引用了。

如果所有的对象按依赖顺序创建的,那么这个系统存储过程会更鲁棒。那些依赖于其他对象的对象总是在它们引用的对象之后创建的。

使用这个过程的一个原因是为了确定一个过程或者表的变化的影响。如果你有一个对象,它引用了30个对象,那么很有可能在编码期间,你为了改变这30个对象而须做更多的工作。

下面的脚本展示一个存储过程和一些对象,这个存储过程引用了一些对象,其他对象又引用了这个存储过程。

IF EXISTS(SELECT name

FROM sysobjects

WHERE name = N'test_table'

AND type = 'U')

DROP TABLE test_table

GO

CREATE TABLE test_table (

c1 VARCHAR(255) NULL)

GO

IF EXISTS (SELECT name

FROM sysobjects

WHERE name = N'test_proc1'

AND type = 'P')

DROP PROCEDURE test_proc1

GO

CREATE PROCEDURE test_proc1 @name sysname = NULL

AS

IF @name IS NOT NULL

BEGIN

INSERT test_table VALUES (@name)

END

ELSE

BEGIN

RETURN

END

GO

IF EXISTS (SELECT name

FROM sysobjects

WHERE name = N'test_proc2'

AND type = 'P')

DROP PROCEDURE test_proc2

GO

CREATE PROCEDURE test_proc2

AS

DECLARE @myVar sysname

SELECT @myVar = name FROM sysobjects WHERE id = 1

EXEC test_proc1 @myVar

GO

EXEC sp_depends test_proc1

GO

DROP PROCEDURE test_proc2, test_proc1

GO

DROP TABLE test_table

GO

1数据的结构化

2数据的共享性

3数据的独立性

4数据的完整性

5数据的灵活性

6数据的安全性

数据库对象是数据库的组成部分,常见的有以下几种:

1表(Table)

2索引(Index)

3视图(View)

4图表(Diagram)

5缺省值(Default)

6规则(Rule)

7触发器(Trigger)

8存储过程(StoredProcere)

9用户(User)

以上就是关于未将对象引用设置到对象的实例全部的内容,包括:未将对象引用设置到对象的实例、事务依赖关系图(优先图)、数据库有哪些特点由哪些对象组成等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10185205.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存