我有一个运行查询的短页面,我需要根据其值/内容而不是行 ID 显示特定行(因为我不知道它们将以什么顺序返回)。
这是我的代码,目前工作正常,前提是我指定了行 id,在本例中为行 id 2(但同样,这将是一个未知值,因此我无法使用行 id):
Imports System.Data
Imports MySql.Data.MySqlClient
Partial Class test
Inherits System.Web.UI.Page
Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load
Dim strSQL As String = ""
strSQL &= "SELECT id, item_name, lang_en "
strSQL &= "FROM language_file_v2 "
strSQL &= "WHERE item_name = 'SiteLandingPageBodyLoggedIn' OR item_name = 'SiteHomePageMySpecificJobs' OR item_name = 'SiteLandingPageBodyLoggedOut'"
Using conn As New MySqlConnection(ConfigurationManager.ConnectionStrings("customer_support_devConnectionString").ConnectionString)
Using da As New MySqlDataAdapter(strSQL, conn)
Dim dt As New DataTable()
da.Fill(dt)
Dim dv As DataView = dt.AsDataView()
LitSiteLandingPageBody.Text = dv.Table.Rows(2)("lang_en").ToString()
End Using
End Using
End Sub
End Class
这可行,但因为我不知道返回结果的顺序,所以我无法使用 Rows(2),因为它可能不是我需要的第 2 行。
因此,我需要一种方法来专门显示 SiteLandingPageBodyLoggedOut 中的值(和/或例如“SiteHomePageMySpecificJobs”中返回的值),而不是 dv.Table.Rows(2)("lang_en").ToString() 例如。
LitSiteLandingPageBody.Text = dv.Table.Rows("SiteLandingPageBodyLoggedOut")("lang_en").ToString()
或者例如。
LitSiteLandingPageBody.Text = dv.Table.Rows(WHERE("item_name")="SiteLandingPageBodyLoggedOut")("lang_en").ToString()
或类似!
随附的屏幕截图显示了数据在数据库中的外观。
最佳答案
您可以使用数据表上的 select 函数来使用以下代码过滤结果
Dim drs = dt.Select("item_name = 'SiteLandingPageBodyLoggedOut'")
If drs.Length > 0 Then
LitSiteLandingPageBody.Text = drs.First()("lang_en").ToString()
End If
关于mysql - 指定要在 dv.Table.Rows(x)(VALUE).ToString() 中使用的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25748415/