每当我有
Dim catID as integer
我在这样的查询中使用它:
cmd.CommandText = "select * from categories where parentid='" + catID + "'"
我明白了:
从字符串
select * from categories where p
到类型Double
的转换无效。
为什么会这样?
sql中的parentid
数据类型为integer
。
答案 0 :(得分:1)
只需删除单引号:
cmd.CommandText = "select * from categories where parentid=" + catID.ToString()
答案 1 :(得分:1)
尝试
cmd.CommandText = string.Format("select * from categories where parentid='{0}'", catID)
如果parentid
是数据库中的数字字段,那么您需要
cmd.CommandText = string.Format("select * from categories where parentid={0}", catID)
答案 2 :(得分:0)
错误告诉您它无法使用您的catID值添加“SELECT * ...”。 '+'运算符试图将“SELECT * ...”转换为数字,因此它可以对其进行数学运算,但它不能,因此它会抛出错误。
很多人尝试使用'+'进行字符串连接。这不是最好的做法,因为'+'只会在双方都是字符串时连接。但如果它在一侧找到一个数字(如你的情况下,用catID),那么它会尝试做数学而不是concat。
养成永不使用'+'来连接字符串的习惯的最佳做法;总是使用'&'代替。这样你就不必考虑它了。
即:
1+1 = 2
1+A = error
1&1 = 11
1&A = 1A