我有这条线可以正常工作:
c.execute('select cleanseq from cleanseqs WHERE newID="%s"'%name)
Run Code Online (Sandbox Code Playgroud)
但我想使用SQLite参数替换而不是字符串替换(因为我在这里看到这更安全).
这是我的(失败)尝试:
t = (name,)
c.execute('select cleanseq from cleanseqs WHERE newID="?"',t)
Run Code Online (Sandbox Code Playgroud)
但是这条线返回:
'提供的绑定数量不正确.当前语句使用0,并且有1个提供.
所以我的陈述的左边部分不起作用.我提供一个绑定(名称,在t)但似乎没有解析问号(?).如果我删除引用的引号,它就可以了.但我希望引号留在那里,因为我记得有些情况我需要它们.
所以问题是:我如何转换这一行:
c.execute('select cleanseq from cleanseqs WHERE newID="%s"'%name)
Run Code Online (Sandbox Code Playgroud) 我正在使用Sqlite在Microsoft Visual C#2008 Express中工作.
我知道我的文本中的一个叛逆者(')在查询中有问题.我的问题是,我认为我可以用\'替换它.它似乎没有工作......这是我的代码的一个例子:
string myString = "I can't believe it!";
cmd.CommandText = "Insert into myTable (myid,mytext) values (1,'" + myString.Replace("'","\\'") + "');";
Run Code Online (Sandbox Code Playgroud)
我得到的错误是:SQLite错误:接近"t":语法错误
我尝试过其他一些替换品......就像其他的斜线一样.我将我的字符串和我的字符串的替换版本写入控制台,以确保它正确出现.
我在这里犯了什么愚蠢的错误?
谢谢!
-Adeena