【发布时间】:2021-02-22 10:10:33
【问题描述】:
我正在尝试在标签中显示用户数,但遗憾的是显示从类型 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")
当我尝试将字符串更改为整数时,会出现不同的显示,这就是它所说的 '从字符串 "SELECT CASE WHEN GROUP_CONCAT(DI" 到类型 'Integer' 的转换无效。'
【问题讨论】:
-
你真的需要那个 GROUP_CONCAT 函数吗?您可以使用 COALESCE 求和避免空值
-
检查什么数据类型设置为数据库中的数字列??
-
顺便说一下,您应该养成使用 SQL 参数来表示
locationtxt.Text等值的好习惯。否则,如果有人不小心输入了撇号,或者有人故意用SQL injection attack 闯入数据库,它就会中断。 this question中有一个例子。