数据输入问题,有点烦,麻烦各位进来看看(200分)

  • 主题发起人 主题发起人 stock
  • 开始时间 开始时间
S

stock

Unregistered / Unconfirmed
GUEST, unregistred user!
有两个TEDIT的空件,在输入完成后讲内容写入SQL SERVER的表中
insert TABLE values ('Edit1.Text', 'Edit2.Text')
正常的写法为:
Query.SQL.Clear;
Query.SQL.Add(format('insert TABLE values (''%s'',''%s'')', [Edit1.Text, Edit2.Text]));
Query.SQL.Execsql;
或者:
Query.SQL.Clear;
Query.SQL.Add('insert TABLE values (');
Query.SQL.Add(Edit1.Text)
Query.SQL.Add(',');
Query.SQL.Add( Edit2.Text);
Query.SQL.Add(')');
Query.SQL.Execsql;

这两种写法中要是EDIT.TEXT中含有“'”(也就是单引号)就会出现错误,请问应该如何处理才能避免
 
Query1.SQL.Add('insert into table values('+#39+edit1.Text+#39...
 
Query.SQL.Clear;
Query.SQL.Add(insert TABLE values (#39+edit1.text+#39,#39+edit2.text+#39);
Query.SQL.Execsql;
这样可以的呀
 
用一个函数QuoteStr
Query.SQL.Add(format('insert TABLE values (%s,%s)', [QuoteStr(Edit1.Text), QuoteStr(Edit2.Text)]));
或者改成用参数
类似:Query.Parameters.ParamByName('a').AsString := Edit1.Text;
建议用后一种方法。
 
nulk,这种方法还是一样的错误
 
请问xianjun,QuoteStr是什么函数??
第二种方法应该怎么写?
 
这样吧,采用参数查询:
Query.close;
Query.SQL.Clear;
Query.SQL.Add('insert TABLE (字段落,字段2) values (:a1,:a2)');
Query.SQL.ParamByname('a1').asstring:=Edit1.text;
Query.SQL.ParamByname('a2').asstring:=Edit2.text;
Query.SQL.Execsql;
 
renyi, 你的写法也是错误的
 
正确的写法应该是Query.Parameters.ParamByName('a').Value
 
给分了!!!
 
刚刚写错了, 应该是QuotedStr, 是Sysutils提供的一个函数
至于第二种方法就象renyi写的那种形式了。他用的是BDE的TQuery
如果是ADOQuery则好象是这样:
ADOQuery1.Parameters.ParamByName('a').Value := Edit1.Text;
当然你的SQL应该写成:
insert into MyTable(field1, field2) values(:A, :B)
 
'insert TABLE values ('''+ Edit1.text +''','''+ Edit2.text +''')'
 
Query.close;
Query.SQL.Clear;
Query.SQL.Add('insert TABLE (字段1,字段2) values (:a1,:a2)');
Query.SQL.ParamByname('a1').value:=trim(Edit1.text);
Query.SQL.ParamByname('a2').value:=trim(Edit2.text);
Query.SQL.Execsql;
因该没有问题了
 
后退
顶部