[英]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.