我的代码如下:
var sqlstr,inputstr:string;
begin
sqlstr:= 'update A4S_GeneralCustomerInfo set Address=:Address where ID = 15868 ';
inputstr:='按时行政村按时地方asdf';
clientdataset1.Close;
clientdataset1.CommandText:=sqlstr;
clientdataset1.Params.ParamByName('Address').AsString:= inputstr;
clientdataset1.Execute;
end;
为什么数据库中'Address'数值只是inputstr 的一部分?(另如果 inputstr 全为英文就可全部修改!)
var sqlstr,inputstr:string;
begin
sqlstr:= 'update A4S_GeneralCustomerInfo set Address=:Address where ID = 15868 ';
inputstr:='按时行政村按时地方asdf';
clientdataset1.Close;
clientdataset1.CommandText:=sqlstr;
clientdataset1.Params.ParamByName('Address').AsString:= inputstr;
clientdataset1.Execute;
end;
为什么数据库中'Address'数值只是inputstr 的一部分?(另如果 inputstr 全为英文就可全部修改!)
解决方案 »
- 远程复制文件
- 急急:TQuickRep自定义打印页面大小代码,
- 有关delphi中使用ole对象的问题
- ★★★ 本人申请网络编程/分布式开发小版主,欢迎提出意见 ★★★
- 要是image已经有底图(即其picture已经有了一个bmp图),再在其上画图形,如rectangle等。要求只清空其上的图形,底图不变,如何做呢?
- DBLookupListBox1怎么用,请大侠们告诉我!
- 执行外部程序时,能不能使外部程序窗口为“模式”窗口?
- ACCESS数据库,向表中的year字段插入数据出错,我快疯了,求救
- 请教Delphi中TAdoConnection的OpenSchema方法使用?
- 请问如何能返回正确路径???
- 代码语句的分行问题
- 请教delphi中关于类概念的问题。
sqlstr:= 'update A4S_GeneralCustomerInfo set Address='''+inputstr+''' where ID = 15868 ';
clientdataset1.Close;
clientdataset1.CommandText:=sqlstr;
clientdataset1.Execute;
这个inputstr里面有可能会有’'‘(也即单引号),会破坏sql语句
解决办法: 修改Delphi目录下 的Source\Vcl\ADODB.pas文件如下,然后重新编译,用新编译的ADODB.dcu替换原来的dcu文件。
function VarDataSize(const Value: OleVariant): Integer;
begin
if VarIsNull(Value) then
Result := -1
else if VarIsArray(Value) then
Result := VarArrayHighBound(Value, 1) + 1
else if TVarData(Value).VType = varOleStr then
begin
//Result := Length(PWideString(@TVarData(Value).VOleStr)^); 此处为源代码
Result := Length(Value); //此处为修改后代码
if Result = 0 then
Result := -1;
end
else
Result := SizeOf(OleVariant);
end;