我有这样的SQL:SQL从多个一份声明中检索值选择
SELECT count (1) FROM users AS total_drafts WHERE version_replace = @sid
SELECT count (1) AS unpublished_drafts FROM users WHERE version_replace = @sid AND moderated = 0
SELECT * FROM users WHERE id = @sid ORDER By ID DESC
这似乎是正确的。不过,我很难从结果中提取字段。在vb.net我使用这个代码片段:
While r.Read()
Dim o_email As String = CStr(r("email"))
Dim o_first_name As String = CStr(r("first_name"))
Dim o_last_name As String = CStr(r("last_name"))
这是造成此错误:System.IndexOutOfRangeException:电子邮件 我已经检查了SQL被正确exucuted。我发布的SQL只是简单地替换了一个简单的语句,它完美地提供给代码片段。
这是为什么?如何纠正?
正确的方法:
While r.Read()
total_drafts = CInt(r("total_drafts"))
End While
r.NextResult()
While r.Read()
unpublished_drafts = CInt(r("unpublished_drafts"))
End While
error_status.Text = total_drafts & " " & unpublished_drafts
r.NextResult()
While r.Read()
Dim o_email As String = CStr(r("email"))
Dim o_first_name As String = CStr(r("first_name"))
Dim o_last_name As String = CStr(r("last_name"))
为什么你不试一试列索引而不是列名,这可能会帮助你。 –
你能发布一个示例输出(来自SQL)吗? – StevieG