首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Datareader检索数据

Datareader检索数据
EN

Stack Overflow用户
提问于 2011-09-09 11:01:34
回答 2查看 330关注 0票数 0

我在包含属性cust_id的数据库中有Membership和Bookings表,它是Membership中的主键和Bookings中的引用键。当我执行数据读取器时,我希望它从membership表中读取bookings值,但它是从cust_id表中读取的。

此外,当我比较两个cust_id值时,一个取自文本框,另一个取自数据库列,尽管两者相同,但比较结果为false。我比较了使用string.equals(str1,str2),也直接使用if语句比较了两者。但在这两种情况下,即使字符串相同,结果也是不同的。

我的问题是:

代码语言:javascript
复制
 str2 = "select Memberships.cust_id from Memberships, Bookings where   Memberships.cust_id = Bookings.cust_id"
Dim cmd2 As New SqlCommand(str2, con)
con.Open()

Dim bookchk As SqlDataReader = cmd2.ExecuteReader  
While bookchk.Read()
Dim str1 As String = MskdTxtCustId.Text
Dim str3 As String = bookchk("cust_id")
MessageBox.Show(str1 & "," & str3 & String.Equals(str1, str3))

End While
    bookchk.Close()
    con.Close()
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-09-09 11:16:29

试着显式地声明你需要一个INNER JOIN

代码语言:javascript
复制
str2 = "select m.cust_id from Memberships AS M " &_
       " INNER JOIN Bookings AS B ON B.cust_id = M.cust_id;"

在进行比较时,请使用String.Compare(),并确保修剪空格,以防万一。

代码语言:javascript
复制
Dim str1 As String = MskdTxtCustId.Text.Trim()
Dim str3 As String = bookchk("cust_id").ToString().Trim()

Dim compareResult As Integer = String.Compare(s1, s2)
MessageBox.Show("compare str1: {0}, str3: {1}, result: {2}" , str1, str3, compareResult)

compareResult = String.Compare(s1, s2, True)
MessageBox.Show("Compare insensitive. result: {0}", compareResult)
票数 0
EN

Stack Overflow用户

发布于 2011-09-11 15:21:16

至于字符串比较:我总是使用Datareader.GetString(item),如下所示:

代码语言:javascript
复制
    If IsDBNull(Dr.Item(nr)) Then
        Return ""
    Else
        Return Dr.GetString(nr).TrimEnd
    End If

其中nr标识要从中提取值的行。您正在使用某种默认方法将数据库值转换为程序变量。我宁愿写我想写的东西。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7356709

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档