帮我看看这个问题,我很郁闷……

Imvini 2003-09-15 12:42:51
我刚学VB.net,在与SQL SERVER连接的取出数据集操作的时候发生这样的错误,请各位大侠指点指点啊!~~~~0~~~~


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

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

源错误:


行 15: ds = Data.check()
行 16:
行 17: table = ds.Tables.Item(0)
行 18:
行 19: For rowIndex = 0 To table.Rows.Count - 1


源文件: C:\so cool\check.vb 行: 17

堆栈跟踪:


[NullReferenceException: 未将对象引用设置到对象的实例。]
so_cool.check.checkuser(String id, String password) in C:\so cool\check.vb:17
so_cool.WebForm1.enter_Click(Object sender, EventArgs e) in C:\so cool\index.aspx.vb:37
System.Web.UI.WebControls.Button.OnClick(EventArgs e)
System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument)
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument)
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData)
System.Web.UI.Page.ProcessRequestMain()


请问这是什么原因啊?在另一个程序里执行是好的,只是这个我是通过函数返回一个数据集赋值给ds



...全文
45 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
lanbaibai 2003-09-16
  • 打赏
  • 举报
回复
把你的代码贴全一点,这样谁知道
chmodyou 2003-09-16
  • 打赏
  • 举报
回复
把Shared Function check() As DataSet
改成Public Function check() As DataSet
试一下看
rock29 2003-09-16
  • 打赏
  • 举报
回复
凡是"未将对象引用设置到对象的实例"的,都是没有生成实例,也就是说
dim a as dataset是不对的,应该是:dim a as new dataset

我这里只是举例,也可能是datatable没有实例化呢,反正从你的代码看不出来
freesnower1001 2003-09-16
  • 打赏
  • 举报
回复

你的代码不规范
改成这样试试呢:
.......
Try
conn.Open()
myAdapter.Fill(ds)
Return ds
Catch ex As SqlException
Console.WriteLine(ex.Message)
finally
conn.close()
End Try
End Function
End Class

xixigongzhu 2003-09-16
  • 打赏
  • 举报
回复
如果出异常的话,check方法会自动返回nothing。

所以可能check方法出异常了,斑竹把Console.WriteLine(ex.Message)改成:
Console.WriteLine("================Exception===========================")
Console.WriteLine(ex)
看是否真的出异常了,出的是什么异常。
xixigongzhu 2003-09-16
  • 打赏
  • 举报
回复
在check()这个方法里用Console.WriteLine跟踪ds的值,看是否为空?

ds = Data.check()
在这句之后也加上一个Console.WriteLine打印ds的值。
Imvini 2003-09-15
  • 打赏
  • 举报
回复
table = ds.Tables(0)后报错还是一样的

Imvini 2003-09-15
  • 打赏
  • 举报
回复
数据集应该有东西的吧

我在DATA类里Shared Function check() As DataSet的函数可以返回数据集么?

dim da as dataset = New DataSet()
ds = Data.check()

panyee 2003-09-15
  • 打赏
  • 举报
回复
table = ds.Tables.Item(0)

 改成
====>

table = ds.Tables(0)
tianch 2003-09-15
  • 打赏
  • 举报
回复
可能数据库里没记录,数据集是空的
Imvini 2003-09-15
  • 打赏
  • 举报
回复
table=Data.check().Tables(0)
没有用

table实例化也是
Imvini 2003-09-15
  • 打赏
  • 举报
回复
以下是DATA类

Public Class Data

Shared Function check() As DataSet

Dim connStr As String = "Integrated Security=SSPI;Persist Security Info=True;Initial Catalog=socool;Data Source=BLUE;Packet Size=4096;Workstation ID=BLUE;"
Dim conn As SqlConnection = New SqlConnection(connStr)
Dim query As String = "select * from login"
Dim command As SqlCommand = New SqlCommand(query, conn)
Dim myAdapter As SqlDataAdapter = New SqlDataAdapter(command)
Dim ds As DataSet = New DataSet()

Try
conn.Open()
myAdapter.Fill(ds)
conn.Close()

Return ds

Catch ex As SqlException
Console.WriteLine(ex.Message)
End Try
End Function

End Class
banni2003 2003-09-15
  • 打赏
  • 举报
回复
可以返回数据集。
1.先实例化
dim table as new DataTable
2.你可以把这句
ds = Data.check()
table = ds.Tables.Item(0)

改成: table=Data.check().Tables(0)
For rowIndex = 0 To table.Rows.Count - 1
cnhgj 2003-09-15
  • 打赏
  • 举报
回复
对象未被实例化 Dim table As new DataTable = ds.Tables(0)
xixigongzhu 2003-09-15
  • 打赏
  • 举报
回复
出错的唯一原因是ds为nothing,就是没有分配地址。

也就是说错误的主要原因在Data.check()这个方法里,这个时候返回了nothing,斑竹可否把这个方法的代码贴出来?
panyee 2003-09-15
  • 打赏
  • 举报
回复
table是什么,实例化了没有?

Dim table As DataTable = new DataTable

16,554

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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