怎样获得DataSet中的特定记录?急,一定给分

屡败屡战数马援 2002-08-22 10:30:30
我定义了一个Connection对象,DataAdapter对象和DataSet对象,
其中SQL命令为:
"SELECT Top 1 country,city from address where ip1 <=" & lngNum & "AND ip2>= "& lngNum &""

注:我的数据库字段名:Country和City,都是文本字段。

我要做的是:利用这个SQL命令在一个Access数据库内找一个记录(就1个),然后我要把找到这个记录的country字段和city字段放到两个字符型变量里面,我该怎么做??

我的方法是,首先定义上面我说的几个对象:

Dim strConn As string=("Provider= Microsoft.Jet.OLEDB.4.0;Data Source="+Server.MapPath("address.mdb"))
Dim objConn As New OleDbConnection(strConn)
Dim strCommand As String
Dim objAdapter As New OleDbDataAdapter (strCommand,objConn)
Dim objDataSet As New DataSet()
strCommand="SELECT Top 1 country,city from address where ip1 <=" & lngNum & "AND ip2>= "& lngNum &""

然后为了防止没有找到记录,我们把找记录的语句放到Try块里面

Try
objConn.Open()
objAdapter.Fill(objDataSet,"address")

Catch objError As Exception

UserSource="您的IP地址数据找不到或者出现错误!"
OutErr.Text=objError.Message & objError.Source

End Try

如果上面的代码运行成功,则DataSet里面应该只有1条记录,这个记录只有两个字段。我定义了两个字符串变量:

Dim strCountry As String
Dim strCity As String

然后就是把放在DataSet里面的记录放到变量里面:

strCountry=objDataSet.Tables("address").Rows(0).Item("country").Value
strCity=objDataSet.Tables("address").Rows(0).Item("city").Value

运行到这里,就出错了!!
.Net框架错误提示:

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

我该怎么办??

如果大家有更好的法子,就是不用DataAdapter和DataSet,直接可以找到数据库内容并且放到变量里的代码,请告诉我,我不胜感激!!!
...全文
58 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
titicaca 2002-08-22
  • 打赏
  • 举报
回复
有结果了吗?
你的方法应该是没有错的
应该还是程序本身的错误
另外,table中是否有纪录应该不影响赋值得
Tongls 2002-08-22
  • 打赏
  • 举报
回复
如果你想用DataSet 用上面的主方法是可以的! 不过,我想最好用DataReader! 这样,你就不用这么麻烦啦! 看如下!

Dim strConn As string=("Provider= Microsoft.Jet.OLEDB.4.0;Data Source="+Server.MapPath("address.mdb"))
Dim objConn As New OleDbConnection(strConn)
Dim strCommand As String
dim Reader1 as new DataReader

strCommand="SELECT Top 1 country,city from address where ip1 <=" & lngNum & "AND ip2>= "& lngNum &""

Dim Comm as new oledb.oledbCommand(strcommand,objconn)

Try
Conn.open
reader1=comm.executeReader
Catch e as exception
msgbox e.desciption
end try
Dim strCountry As String
Dim strCity As String

strcountry=reader1("Country").tostring
strCity=reader1("City").Tostring

  • 打赏
  • 举报
回复
我看了一下,大概是程序的逻辑有问题,我不应该把lngNum变量(就是SQL命令查找条件的变量)的生成语句放到这个Function里面,我应该放到Page_Load里面,看看是否会出错~~
  • 打赏
  • 举报
回复
奇怪,我看了代码,说明我的代码没有错啊,我再看看~~
:-(
forest 2002-08-22
  • 打赏
  • 举报
回复
要判断DataSet 中是否有要使用的表Table ,及Table中是否有记录。
if ( objDataSet.Tables.Count >0 && objDataSet.Tables("address").Rows.Count>0)
{
strCountry=objDataSet.Tables("address").Rows(0).Item("country").Value
strCity=objDataSet.Tables("address").Rows(0).Item("city").Value

}

或者使用DataReader 也可以
titicaca 2002-08-22
  • 打赏
  • 举报
回复
你确信实在这里出错的吗?
strCountry=objDataSet.Tables("address").Rows(0).Item("country").Value
strCity=objDataSet.Tables("address").Rows(0).Item("city").Value
一步一步debug了吗?
未将对象引用设置到对象的实例,这个错误应该不会处在这里的

1,979

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 其他语言讨论
社区管理员
  • 其他语言社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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