簡體   English   中英

VB.NET 從“Byte()”類型轉換為“字符串無效”類型

[英]VB.NET Conversion from type `Byte()` to type 'String is not Valid''

我正在嘗試顯示 label 中的用戶數,但遺憾的是顯示從類型Byte()轉換為類型“字符串無效”的錯誤

 Dim Number2 As String = "SELECT CASE WHEN GROUP_CONCAT(DISTINCT t.number) IS NULL
                                            THEN '0'
                                            WHEN GROUP_CONCAT(DISTINCT t.number) = ''
                                            THEN '0'
                                            ELSE SUM(t.number)    END  as 'Total'
                                FROM types_of_learners t JOIN
                                blh_location blhloc
                                ON t.blh_location_userid=blhloc.blh_id
                                WHERE t.date_submitted >= date_sub(curdate(), interval 0 day) 
                                AND t.tol='Associations'
                                AND blhloc.blh_barangay='" & locationtxt.Text & "'"
        da = New MySqlDataAdapter(Number2, mycon)
        dt = New DataTable()
        da.Fill(dt)
        txtNo2.Text = dt.Rows(0)("Total")

當我嘗試將字符串更改為 Integer 時,會出現不同的顯示,這就是它所說的“從字符串“SELECT CASE WHEN GROUP_CONCAT(DI”到類型“整數”的轉換無效。”

嘗試使用

txtNo2.Text = dt.Rows(0)("Total").ToString()

您可以避免 GROUP_CONCAT 強制您使用字符串表達式,因為 SUM 本身會忽略 NULL 值

Dim Number2 As String = "SELECT SUM(t.number) as 'Total'
                         .....

而且,作為旁注。 這條線

    AND blhloc.blh_barangay='" & locationtxt.Text & "'"

是一個眾所周知的安全問題,因為它允許執行 SQL 注入攻擊。 使用 always 參數,如

    .....
    AND blhloc.blh_barangay=@loc"

    da = New MySqlDataAdapter(Number2, mycon)
    da.SelectCommand.Parameters.Add("@loc", MySqlDbType.VarChar).Value = locationtxt.Text
    dt = New DataTable()
    da.Fill(dt)
    txtNo2.Text = dt.Rows(0)("Total")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM