这个插入语句中定义值的所有这些字符是做什么的?
"&""&"'"&N4&"',"&""&"'"&"Mapping"&"',
我想了解每个人的作用?我知道N4是一个单元格位置,而Mapping是一个硬编码值。它有效,但是,这里发生了什么?
完成命令:
"insert into partnerrules (name,description,[default],version,doc,[order],active,isComboBox) values("&"'"&P3&"',"&""&"'"&M3&"',"&""&"'"&N3&"',"&""&"'"&"Mapping"&"',"&""&"'"&"856"&"', "&""&"'"&O3&"',"&""&"'"&"1"&"',"&""&"'"&"0"&"'"&")"
答案 0 :(得分:1)
通过查看代码,它似乎是在VB和“&”中完成的。 character用于将字符串添加到一起,例如
someVar = "hello " & "world"
会导致
"hello world"
因此,尝试做的是在它们周围添加字符串和引号的值以构建sql-insert语句。但是,由于您对sql-injection执行此格式而非参数化,因此执行得很糟糕。对它进行一些研究,因为如果没有更多的实际源代码来展示背景,就没有足够的回应。
complete command: ="insert into partnerrules (name,description,[default],version,doc,[order],active,isComboBox) values("&"'"&P3&"',"&""&"'"&M3&"',"&""&"'"&N3&"',"&""&"'"&"Mapping"&"',"&""&"'"&"856"&"', "&""&"'"&O3&"',"&""&"'"&"1"&"',"&""&"'"&"0"&"'"&")"
会导致以下结果 例如:如果以下变量具有以下值
P3 = "test1"
M3 = "test2"
N3 = "test3"
O3 = "test4"
我在一行上做了明确的换行符,可读性太长了......
insert into partnerrules (name,description,[default],version,doc,[order],active,isComboBox) values (
现在,您所有报价的区域和&
'test','test2','test3','Mapping','856','test4','1','0')
我们应该做的更多的事情......下划线是VB中的延续线
DIM OleDbCommand myInsert = new OleDbCommand( "", YourConnection )
myInsert.CommandText = "insert into partnerrules ( name, description, " _
& "[default], version, doc, [order], active, isComboBox ) " _
& " values ( ?, ?, ?, 'Mapping', '856', ?, '1','0')
在这种情况下,“?”字符代表PARAMETER PLACE-HOLDERS,用于实际插入表中的内容。然后,按照它们代表的顺序添加您的参数。
myInsert.Parameters.AddWithValue( "parmForName", P3 )
myInsert.Parameters.AddWithValue( "parmForDescription", M3 )
myInsert.Parameters.AddWithValue( "parmForDefault", N3 )
myInsert.Parameters.AddWithValue( "parmForOrder", O3 )
由于提供的内容有限,不确定数据类型。