从vb查询sql server的问题

时间:2011-06-15 22:41:03

标签: sql vb.net visual-studio-2010

每当我有

Dim catID as integer

我在这样的查询中使用它:

cmd.CommandText = "select * from categories where parentid='" + catID + "'"

我明白了:

  

从字符串select * from categories where p到类型Double的转换无效。

为什么会这样?
sql中的parentid数据类型为integer

3 个答案:

答案 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