我正在尝试将sql字符串中的两个组合框选定值与以下代码组合在一起:
opdragplaasnommer.CommandText = "SELECT plaasnommer FROM oesskattings
WHERE plaasnaam = '" & CmbPlaasnaam.Text & "'" And aliasnaam = " '" &
CmbAliasnaam.Text & "'"
但是,我认为我搞砸了我的引号和双引号。我收到以下错误消息:
附加信息:从字符串" SELECT plaasnommer转换 来自oesskatt"输入'布尔'无效。
答案 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参数并为它们赋值。