vb.net - 如何将 SQL 数据库中最后一行的选定单元格值放入两个标签中?
问题描述
当表单从 SQL 数据库加载时,我试图从最后一行的选定列中获取值到标签 1 和标签 2 中。我的代码不起作用。我怎样才能做到这一点?我的代码在这里:
Private Sub getvalue()
Dim strConn = "server= PANKAJ\SQLEXPRESS; database = pankaj billing software; integrated security=true"
Dim sqlConn = New SqlConnection(strConn)
sqlConn.Open()
Dim sqlcmd As New SqlCommand("select 22ktrate, 21ktrate from ratedata where max(rateid) = @rateid", sqlConn)
Dim myreader As SqlDataReader
myreader = sqlcmd.ExecuteReader()
myreader.Read()
If myreader.HasRows Then
Label1.Text = myreader.Item("22ktrate")
Label2.Text = myreader.Item("21ktrate")
End If
sqlConn.Close()
End Sub
解决方案
我注意到的一件大事是没有设置@rateid
参数。
Private Sub getvalue()
Dim conn As String = "server= PANKAJ\SQLEXPRESS; database = pankaj billing software; integrated security=true"
Dim sql As String = "select [22ktrate], [21ktrate] from ratedata where max(rateid) = @rateid"
Using sqlConn As New SqlConnection(conn), _
sqlcmd As New SqlCommand(sql, sqlConn)
'This was missing. You need to know what to set for 1234 here.
'I suggest adding it as argument to the method.
sqlcmd.Parameters.Add("@rateid", SqldbType.Int).Value = 1234
sqlConn.Open()
Using myreader As SqlDataReader = sqlcmd.ExecuteReader()
If myreader.Read() Then
Label1.Text = myreader("22ktrate").ToString()
Label2.Text = myreader("21ktrate").ToString()
End If
End Using
End Using
End Sub
我也对代码进行了其他结构更改,您应该遵循这个新模式。问题中的原始代码有几个不太明显的问题,这些问题最终可能会导致面向用户的问题,例如如果抛出异常则无法关闭连接。
最后,我在评论中看到了这一点:
我只想从 sql 数据库中选择最后一行两个选定的列值
该选择语句中没有 ORDER BY 子句。如果没有 ORDER BY 子句,行的顺序是未定义的,Sql Server 可以自由地以它认为方便的任何顺序为您提供行。“最后一行”没有有意义的定义。如果这很重要,您必须在 sql 语句中添加一个 ORDER BY 子句......此时,您最好颠倒顺序并仅获取第一条记录,而不是迭代整个结果集。如果没关系......你最好只取第一行而不是迭代整个集合。在任何一种情况下,您还可以在 SQL 命令中添加 TOP 1 — 如果甚至可能有多个记录匹配max(rateid)
.
推荐阅读
- pascalscript - 我的字符串数组的 Pascal InsertsionSort 无法正常工作
- angular - 如果 kendo-ui 默认使用英语表达但我在我的应用程序中使用另一种语言,我如何生成翻译文件?
- javascript - 无法将表单数据发送到 PHP 页面
- python-3.x - Elasticsearch 7:无法解析日期
- c# - Parallel.For 启动了意外数量的线程
- javascript - 推送订阅已取消订阅或过期,状态码为 410
- c++ - 在 CortexM0 中从 RAM 运行代码时出现硬故障
- android - 我可以将我的应用程序 sharedprefs 数据限制为 android 中的谷歌驱动器/云吗?
- javascript - 无法在带有 flex 的 slick-slider 项目中居中 div
- python - 为什么 python round(np.float16(np.pi),5) 返回无穷大?错误、限制或预期?