将两个组合值转换为sql字符串

时间:2017-11-18 11:29:52

标签: vb.net

我正在尝试将sql字符串中的两个组合框选定值与以下代码组合在一起:

      opdragplaasnommer.CommandText = "SELECT plaasnommer FROM oesskattings 
      WHERE plaasnaam =  '" & CmbPlaasnaam.Text & "'" And aliasnaam = " '" & 
      CmbAliasnaam.Text & "'"

但是,我认为我搞砸了我的引号和双引号。我收到以下错误消息:

  

附加信息:从字符串" SELECT plaasnommer转换   来自oesskatt"输入'布尔'无效。

3 个答案:

答案 0 :(得分:1)

你真的应该学习如何使用String.Format方法或字符串插值。与反复使用连接运算符(&)相比,它更不容易出错。只需查看颜色,您就可以看到代码的问题。文字String中的任何内容都应该是红色的,您可以看到一些应该是红色但不是红色的。大概它应该是这样的:

opdragplaasnommer.CommandText = "SELECT plaasnommer FROM oesskattings WHERE plaasnaam = '" & CmbPlaasnaam.Text & "' And aliasnaam = '" & CmbAliasnaam.Text & "'"

使用String.Format将如下所示:

opdragplaasnommer.CommandText = String.Format("SELECT plaasnommer FROM oesskattings WHERE plaasnaam = '{0}' And aliasnaam = '{1}'", CmbPlaasnaam.Text, CmbAliasnaam.Text)

正如你所看到的,不那么容易搞砸了。字符串插值如下所示:

opdragplaasnommer.CommandText = $"SELECT plaasnommer FROM oesskattings WHERE plaasnaam = '{CmbPlaasnaam.Text}' And aliasnaam = '{CmbAliasnaam.Text}'"

鉴于这是SQL代码,更好的想法是使用参数。我不打算详细说明,因为这里到处都有信息,但这是你真正需要学习的东西。除了代码不易出错之外,它还有助于避免因格式化问题导致的崩溃,最重要的是,可以防止SQL注入攻击。

答案 1 :(得分:0)

你搞乱了你的字符串;

opdragplaasnommer.CommandText = "SELECT plaasnommer FROM oesskattings WHERE plaasnaam =  '" & CmbPlaasnaam.Text & "' And aliasnaam =  '" & CmbAliasnaam.Text & "'"

答案 2 :(得分:0)

在VB .NET中,字符串连接用&执行。符号。新行需要下划线。

opdragplaasnommer.CommandText = "SELECT plaasnommer FROM oesskattings" & _
      " WHERE plaasnaam =  '" & CmbPlaasnaam.Text & "' And aliasnaam = '" & _
      CmbAliasnaam.Text & "'"

但我建议在这种情况下使用String.Format函数。

opdragplaasnommer.CommandText = String.Format("SELECT plaasnommer FROM oesskattings WHERE plaasnaam = '{0}' and aliasnaam = '{1}'", 
CmbPlaasnaam.Text,CmbAliasnaam.Text)

这又是另一种方式。但是,说实话,我讨厌SQL查询的连接。最好声明SQL参数并为它们赋值。