我是通过如下方式写数据库的(相信大多数人都是)
sqlstr:='insert into holland values ('''+Edit1.Text+''')';
但是现在有个问题了:如果我的Edit1的内容没有单引号肯定写进去没有问题,但如果有了就肯定写失败,因为SQL Server把字符串里的单引号当成字段分隔符了,我又不知道客户会输入什么内容,怎么预防这种情况呢?
sqlstr:='insert into holland values ('''+Edit1.Text+''')';
但是现在有个问题了:如果我的Edit1的内容没有单引号肯定写进去没有问题,但如果有了就肯定写失败,因为SQL Server把字符串里的单引号当成字段分隔符了,我又不知道客户会输入什么内容,怎么预防这种情况呢?
改为:sqlstr:='insert into holland values('+#39+edit1.text+#39+')';
就可以了
你的方法我试过了,如果edit1.text里没有引号确实也可以写进去,但如果有的话还是不行:(
ygflydream(飞飞)
你的方法可以用在update上,但我要insert的话adoquery还没有关联到表,怎么会取出它的fieldbyname呢?谢谢各位的支持,期待更好的答案中
ps:我的程序中用到SQL语句的地方有几十处,Edit更多达上千,最好能有个简单的方法,谢谢了
表关连可以用一个假条件就行。取一个空集回来
adoQuery.Insert;
adoQuery.Fields['field1'].AsString := edit1.text;
sqlstr:=format('insert into holland values (''%s'')',[QuotedStr(Edit1.Text)]);