VB.NET-为什么此sql命令作为字符串而不是参数化查询起作用?
技术问答
257 人阅读
|
0 人回复
|
2023-09-12
|
Dim command_sbsp As New OleDbCommand("SELECT * FROM SNOMED_ORG_INFO WHERE ConceptID=@ID AND Genus='SALMONELLA' AND SubSpecies=@Subsp", SNOMED_DB)1 ~9 Z! W& Z$ \( i! ?
For Each match As Long In choices8 G8 B$ y- l* c3 z
command_sbsp.Parameters.Clear()
8 c4 i! \( S0 R& x$ H5 k command_sbsp.Parameters.AddWithValue("@Subsp", word)$ c( V1 E T6 N) S$ b+ D
command_sbsp.Parameters.AddWithValue("@ID", match)
/ H {( C( |* N9 i! S3 q" f& d! z上面的方法不起作用。查询尝试表明没有与此相匹配的内容。但是,当我将其作为简单的字符串连接尝试时,它可以正常工作。
/ I- \' w1 C0 n* V, mcommand_sbsp = New OleDbCommand("SELECT * FROM SNOMED_ORG_INFO WHERE ConceptID=" + match.ToString + " AND Genus='SALMONELLA' AND SubSpecies='" + word + "'", SNOMED_DB)& W2 |7 `+ h( N e$ Z4 p6 C- {
我自己和一个同事已经盯着这个东西很多了,我们不知道为什么它不起作用。问题出在@ID的值中(因为当我将另一个参数设置为参数时,它仍然有效)。有趣的是,上面只有几行代码,我有一个不同的查询,使用与For
3 l( J' E' P/ R$ q" HEach循环从中获取match变量的相同选择列表,为相同ID设置了参数化值。
" D7 X8 Q+ |3 `7 ?5 I: S& YChoices是一个long列表,当我使用choices(0)在查询中参数化ID时,它可以工作。但是现在在这个循环中,我有很长的新比赛了,它不想让它对我有用。有什么想法吗?
+ U1 U$ ]5 z! I! n5 U3 s5 Z # C0 A+ ^$ M4 s: f8 d
解决方案: |
|
|
|
|
|