读书人

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

发布时间: 2011-12-28 22:45:21 作者: rapoo

未将对象引用设置到对象的实例!在线等待
添加数据到sql server 表内
错误定位在行47
“/myweb”应用程序中的服务器错误。
--------------------------------------------

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

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

源错误:


行 45: Dim bumen As String
行 46: bumen = Request.QueryString( "bumeid ")
行 47: bumen = bumen.Substring(bumen.Length() - 2, 3)
行 48: Dim bumeid As Integer
行 49: bumeid = CInt(bumen)


代码如下:
Imports System.Data.SqlClient
Public Class RecordAdd
Inherits System.Web.UI.Page

#Region " Web 窗体设计器生成的代码 "

'该调用是 Web 窗体设计器所必需的。
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()

End Sub
Protected WithEvents Label1 As System.Web.UI.WebControls.Label
Protected WithEvents Label2 As System.Web.UI.WebControls.Label
Protected WithEvents xing As System.Web.UI.WebControls.Label
Protected WithEvents Label5 As System.Web.UI.WebControls.Label
Protected WithEvents TextName As System.Web.UI.WebControls.TextBox
Protected WithEvents TextWangye As System.Web.UI.WebControls.TextBox
Protected WithEvents TextXingbie As System.Web.UI.WebControls.TextBox
Protected WithEvents TextXueli As System.Web.UI.WebControls.TextBox
Protected WithEvents Button1 As System.Web.UI.WebControls.Button
Protected WithEvents FONT1 As System.Web.UI.HtmlControls.HtmlGenericControl
Protected WithEvents Label3 As System.Web.UI.WebControls.Label
Protected WithEvents Textbumen As System.Web.UI.WebControls.TextBox

'注意: 以下占位符声明是 Web 窗体设计器所必需的。
'不要删除或移动它。
Private designerPlaceholderDeclaration As System.Object

Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
'CODEGEN: 此方法调用是 Web 窗体设计器所必需的
'不要使用代码编辑器修改它。
InitializeComponent()


End Sub

#End Region

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'在此处放置初始化页的用户代码
End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim conn As New SqlConnection
conn.ConnectionString = "server=(local);database=test;user Id=sa;password=; "
'conn.ConnectionString = ConfigurationSettings.AppSettings( "DBConnstr ")
Dim sqladd As String
Dim bumen As String
bumen = Request.QueryString( "bumeid ")
bumen = bumen.Substring(bumen.Length() - 2, 3)
Dim bumeid As Integer
bumeid = CInt(bumen)
If bumeid = 0 Then
bumeid = 1
End If
sqladd = "insert into person(name,xueli,xingbie,wangye,bumenid) values( ' " & TextName.Text & " ', ' " & TextXueli.Text & " ', ' " & TextXingbie.Text & " ', ' " & TextWangye.Text & " ', " & Textbumen.Text & ") "

conn.Open()
Dim addcmd As New SqlCommand(sqladd, conn)
addcmd.ExecuteNonQuery()
conn.Close()
Dim redirect As String
redirect = " <script language= 'javascript '> window.opener.location= 'display.aspx?bmid= " & Request.QueryString( "bmid ") & " ';window.close(); </script> "
' redirect = " <script language= 'javascript '> window.opener.location= 'display.aspx;window.close(); </script> "
Response.Write(redirect)
End Sub


End Class


[解决办法]
bumen = bumen.Substring(bumen.Length() - 2, 3)
不知道VB中是不是Length后还需要()括号,C#中没有


redirect = " <script language= 'javascript '> window.opener.location= 'display.aspx?bmid= " & Request.QueryString( "bmid ") & " ';window.close(); </script> "

不知道你传递的变量名是 bmid 还是 bumeid 。。。。

如果错误代码那地方要接收的值是redirect这句话传递的变量的话,那么,

Dim bumen As String
行 46: bumen = Request.QueryString( "bumeid ")
行 47: bumen = bumen.Substring(bumen.Length() - 2, 3)
行 48: Dim bumeid As Integer
行 49: bumeid = CInt(bumen)

应该改为:

Dim bumen As String
行 46: bumen = Request.QueryString( "bmid ")
行 47: bumen = bumen.Substring(bumen.Length() - 2, 3)
行 48: Dim bumeid As Integer
行 49: bumeid = CInt(bumen)

[解决办法]
应该先判断 bumen 是否为空
bumen = Request.QueryString( "bmid ")
If Not String.IsEmptyOrNull(bumen) Then
bumen = bumen.Substring(bumen.Length() - 2, 3)
End If

[解决办法]
如无意外 Request.QueryString( "bmid ") 没得到值
[解决办法]
加上这一句在执行你的代码。
if(Request.QueryString( "bumeid ")!=null){
bumen = Request.QueryString( "bumeid ")
bumen = bumen.Substring(bumen.Length() - 2, 3)

}

请你转换成vb.net。我用的是c#。net。
[解决办法]
在调用那个为实例化对象之前,你可以先判断是是不是为null,你这种情况应该是这样的

读书人网 >asp.net

热点推荐