【发布时间】:2025-12-22 08:35:10
【问题描述】:
当没有数据存在 ASP.NET 时尝试读取无效
第 46 行出现错误:
Dim requestid = dbreader.GetInt32(1)
我的数据库中的那一列中有数据,所以我卡住了。
如果需要,可以发布更多代码。
Imports System.Data.SqlClient
Public Class WebForm1
Inherits System.Web.UI.Page
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
writemystuff()
End Sub
Dim conn As New SqlConnection
Sub CloseDatabase()
conn.Close()
End Sub
Sub ConnectToDatabase()
conn.ConnectionString = ConfigurationManager.ConnectionStrings("dbSQL").ConnectionString
conn.Open()
End Sub
Sub writemystuff()
'Response.Write(SQL1)
Dim XMLOutput = "<?xml version=""1.0"" encoding=""utf-8"" ?>"
'XMLOutput = XMLOutput + "<?xml-stylesheet type=""text/xsl"" href=""XMLSchema1.xslt""?>"
XMLOutput = XMLOutput + "<requests "
XMLOutput = XMLOutput + " xmlns = ""http://www.w3schools.com"""
XMLOutput = XMLOutput + " xmlns:xsi = ""http://www.w3.org/2001/XMLSchema-instance"""
XMLOutput = XMLOutput + " xsi:schemaLocation=""http://www.w3schools.com XMLSchema1.xsd"">"
ConnectToDatabase()
Dim choice = Request("requestchoice")
Dim SQL1 = "select * from request where r_id = 314"
If choice = "Request 112" Then
SQL1 = "select * from request where r_id = 112"
End If
Dim cmd = New SqlCommand(SQL1, conn)
Dim dbreader = cmd.ExecuteReader()
For Each record In dbreader
Next
Dim requestid = dbreader.GetInt32(1)
XMLOutput = XMLOutput + "<vendor"
XMLOutput = XMLOutput + " v_name=""" & dbreader.GetString(2) & """"
XMLOutput = XMLOutput + " v_id=""" & dbreader.GetInt32(0) & """"
XMLOutput = XMLOutput + " r_id=""" & dbreader.GetInt32(1) & """"
XMLOutput = XMLOutput + " >"
Dim SQL2 = "select * from product where r_id = " & requestid
Dim cmd2 = New SqlCommand(SQL2, conn)
Dim dbreader2 = cmd2.ExecuteReader()
For Each record2 In dbreader2
XMLOutput = XMLOutput + "<product"
XMLOutput = XMLOutput + " p_name=""" & dbreader2.GetString(3) & """"
XMLOutput = XMLOutput + " p_id=""" & dbreader2.GetInt32(0) & """"
XMLOutput = XMLOutput + " cost=""" & dbreader2.GetDecimal(2) & """"
XMLOutput = XMLOutput + " >"
Next
dbreader2.Close()
XMLOutput = XMLOutput + "</request>"
CloseDatabase()
XMLOutput = XMLOutput + "</requests>"
Response.Write(XMLOutput)
End Sub
End Class
更新的代码仍有问题:
Imports System.Data.SqlClient
Public Class WebForm1
Inherits System.Web.UI.Page
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
writemystuff()
End Sub
Dim conn As New SqlConnection
Sub CloseDatabase()
conn.Close()
End Sub
Sub ConnectToDatabase()
conn.ConnectionString = ConfigurationManager.ConnectionStrings("dbSQL").ConnectionString
conn.Open()
End Sub
Sub writemystuff()
'Response.Write(SQL1)
Dim XMLOutput = "<?xml version=""1.0"" encoding=""utf-8"" ?>"
'XMLOutput = XMLOutput + "<?xml-stylesheet type=""text/xsl"" href=""XMLSchema1.xslt""?>"
XMLOutput = XMLOutput + "<requests "
XMLOutput = XMLOutput + " xmlns = ""http://www.w3schools.com"""
XMLOutput = XMLOutput + " xmlns:xsi = ""http://www.w3.org/2001/XMLSchema-instance"""
XMLOutput = XMLOutput + " xsi:schemaLocation=""http://www.w3schools.com XMLSchema1.xsd"">"
ConnectToDatabase()
Dim choice = Request("requestchoice")
Dim SQL1 = "select * from request where r_id = 314"
If choice = "Request 112" Then
SQL1 = "select * from request where r_id = 112"
End If
Dim cmd = New SqlCommand(SQL1, conn)
Dim dbreader = cmd.ExecuteReader()
For Each record In dbreader
While dbreader.Read()
Dim requestid = dbreader.GetInt32(1)
XMLOutput = XMLOutput + "<vendor"
XMLOutput = XMLOutput + " v_name=""" & dbreader.GetString(2) & """"
XMLOutput = XMLOutput + " v_id=""" & dbreader.GetInt32(0) & """"
XMLOutput = XMLOutput + " r_id=""" & dbreader.GetInt32(1) & """"
XMLOutput = XMLOutput + " >"
Dim SQL2 = "select * from product where r_id = " & requestid
End While
Dim cmd2 = New SqlCommand(SQL2, conn)
Dim dbreader2 = cmd2.ExecuteReader()
While dbreader2.Read()
XMLOutput = XMLOutput + "<product"
XMLOutput = XMLOutput + " p_name=""" & dbreader2.GetString(3) & """"
XMLOutput = XMLOutput + " p_id=""" & dbreader2.GetInt32(0) & """"
XMLOutput = XMLOutput + " cost=""" & dbreader2.GetDecimal(2) & """"
XMLOutput = XMLOutput + " >"
End While
Next
XMLOutput = XMLOutput + "</request>"
CloseDatabase()
XMLOutput = XMLOutput + "</requests>"
Response.Write(XMLOutput)
End Sub
End Class
【问题讨论】:
-
我已经编辑了你的标题。请参阅“Should questions include “tags” in their titles?”,其中的共识是“不,他们不应该”。
标签: asp.net sql-server vb.net visual-studio