2

我是 VB.Net 2010 的新手。这是我的问题:我有一个查询,它使用组合框来获取 tblKBA 中的许多项目。MS Access 数据库中的所有 ID 都是整数。组合框显示成员和值成员设置为 tblProducts 的资产和 ID。

myQuery = "SELECT id, desc, solution FROM tblKBA WHERE tblKBA.product_id = '" + cmbProducts.SelectedValue + "'"

除了从 KBA 表中获取项目之外,我还想从部门表中获取部门详细信息,可能在同一个查询中完成。我试图在两个单独的查询中做到这一点。

myQuery = "从 tblDepartments 中选择电话、描述、网站,其中 tblDepartments.product_id = tblProducts.id 和 tblProducts.id = '" + cmbProducts.SelectedValue + "'"

所有帮助将不胜感激!

4

4 回答 4

1

将“+”更改为“&”,编译器会很高兴。

于 2012-07-09T14:43:41.267 回答
1

尝试添加或.toStringcmbproducts.selectedvalue"tblKBA.product_id.equals(" & cmbProducts.selectedValue.toString & ")"

于 2012-07-09T14:50:18.973 回答
0

3件事。在构建 select 语句之前测试您的值。其次,使用 .SelectedItem.Value 而不是 .SelectedValue。第三,保护自己免受sql注入攻击。使用参数,或者至少检查 ' 值。

  If IsNumeric(cmbProducts.SelectedItem.Value) = False Then
    'No valid value
    Return
  End If
  myQuery = String.Format("SELECT id, desc FROM tblKBA WHERE tblKBA.product_id = {0}", cmbProducts.SelectedItem.Value.Replace("'", "''"))
于 2012-07-09T14:46:20.147 回答
0

1.) 不要使用字符串连接来构建查询。使用参数

2.)我猜 tblKBA.product_id 是双精度而不是字符串,所以不要在它周围加上引号。

myQuery = "SELECT id, desc FROM tblKBA WHERE tblKBA.product_id = ?"
于 2012-07-09T14:39:24.247 回答