【发布时间】:2021-05-04 10:58:02
【问题描述】:
有谁知道怎么回事?
我正在尝试计算 MS 访问数据库中的行数。
这是我尝试过的代码:
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim conn As New OleDbConnection
conn.ConnectionString = ("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=F:\Test Database\Database.accdb")
conn.Open()
Dim strsql As String
strsql = "Select count(*) from TABLA" '" select Panel from PANELS where ID"
Dim cmd As New OleDbCommand(strsql, conn)
Dim myreader As OleDbDataReader
myreader = cmd.ExecuteReader
myreader.Read()
PanelsInDatabase = myreader.Item(strsql)
Label1.Text = PanelsInDatabase
conn.Close()
For i As Integer = 0 To PanelsInDatabase - 1
CreatePanels()
CreateDeleteButton(_PanelName)
CreateLabels(_PanelName)
CreateLabel2(_PanelName)
Next
End Sub
如果我启动代码,我会得到一个错误:
System.IndexOutOFRangeException
【问题讨论】:
-
按照建议,如果您想获得单个值,您应该调用
ExecuteScalar。也就是说,如果您编写的代码有意义但您的代码没有意义,您可以调用ExecuteReader(ExecuteScalar在内部执行)。您在哪里见过使用包含 SQL 代码的String索引数据读取器的示例?你没有。每个示例都使用列的数字索引,那么您为什么希望它以其他方式工作? -
@jmcilhinney Item 这些天确实需要一个字符串,但你是对的,它会是一个奇怪的 sql 导致它需要一个 sql ..
SELECT 1 AS "SELECT 1 AS x FROM t" FROM t怎么样? :)
标签: vb.net ms-access-2010