设为首页 收藏本站
查看: 533|回复: 0

[经验分享] 利用Jsonarray拼接sql

[复制链接]

尚未签到

发表于 2018-10-23 10:00:43 | 显示全部楼层 |阅读模式
  function getjsontoWhereSql(const ajsonarray: TJSONArray): string;
  var
  i: Integer;
  ajsonobject: TJSONObject;
  afieldname,afieldvalue:string;
  sqlwherestring:string;
  afieldoperator:string;
  begin
  sqlwherestring := ' ';
  for i := 0 to ajsonarray.Size - 1 do
  begin
  ajsonobject := ajsonarray.Get(i) as TJSONObject;
  afieldname := ajsonobject.Pairs[0].JsonString.ToString;
  afieldname := ReplaceStr(afieldname, '"', '');
  afieldvalue := ajsonobject.Pairs[0].JsonValue.Value;
  afieldoperator := ajsonobject.Pairs[1].JsonValue.Value;
  sqlwherestring := sqlwherestring + ' ' + afieldname + ' ' + afieldoperator +
  ' ' + QuotedStr(afieldvalue) + ' and ';
  end;
  Result := ' where ' + LeftStr(sqlwherestring,
  Length(sqlwherestring) - 5);
  end;
  ///////////////
  function getjsontoInsertSql(const ajsonarray:TJSONArray; tablename: string): string;
  var
  i,j: Integer;
  ajsonobject: TJSONObject;
  sqlstring:string;
  afieldname,afieldvalue:string;
  begin
  sqlstring := '';
  for i := 0 to ajsonarray.Size - 1 do
  begin
  sqlstring := sqlstring + ' insert into ' + tablename + '(';
  ajsonobject := ajsonarray.Get(i) as TJSONObject;
  for j := 0 to ajsonobject.Size - 1 do
  begin
  afieldname := ajsonobject.Pairs[j].JsonString.ToString;
  sqlstring := sqlstring + ReplaceStr(afieldname, '"', '') + ',';
  end;
  sqlstring := LeftStr(sqlstring, Length(sqlstring) - 1);
  sqlstring := sqlstring + ')values(';
  for j := 0 to ajsonobject.Size - 1 do
  begin
  afieldvalue := ajsonobject.Pairs[j].JsonValue.Value;
  sqlstring := sqlstring + QuotedStr(afieldvalue) + ',';
  end;
  sqlstring := LeftStr(sqlstring, Length(sqlstring) - 1);
  sqlstring := sqlstring + ')';
  end;
  Result := sqlstring;
  end;
  ///////////
  function TForm1.getjsontoSelectSql(const ajsonwherearray: TJSONArray;
  tablename: string;const theSql:string): string;
  var
  sqlwherestring:string;
  begin
  sqlwherestring := getjsontoWhereSql(ajsonwherearray);
  result := thesql + ' from ' +  tablename + sqlwherestring;
  end;
  /////////
  function getjsontoUpdadteSql(const ajsonUpdatearray,ajsonWherearray: TJSONArray;
  tablename: string): string;
  var
  i,j: Integer;
  ajsonobject: TJSONObject;
  sqlstring:string;
  afieldname,afieldvalue:string;
  setvaluesql,sqlwherestring:string;
  afieldoperator:string;
  begin
  sqlstring := '';
  for i := 0 to ajsonUpdatearray.Size - 1 do
  begin
  sqlstring := sqlstring + ' update ' + tablename + ' set ';
  ajsonobject := ajsonUpdatearray.Get(i) as TJSONObject;
  setvaluesql := '';
  for j := 0 to ajsonobject.Size - 1 do
  begin
  afieldname := ajsonobject.Pairs[j].JsonString.ToString;
  afieldname := ReplaceStr(afieldname, '"', '');
  afieldvalue := ajsonobject.Pairs[j].JsonValue.Value;
  setvaluesql := setvaluesql + afieldname + ' = ' + QuotedStr(afieldvalue) + ',';
  end;
  setvaluesql := LeftStr(setvaluesql, Length(setvaluesql) - 1);
  //////
  sqlwherestring := getjsontoWhereSql(ajsonWherearray);
  sqlstring := sqlstring + setvaluesql + sqlwherestring;
  end;
  Result := sqlstring;
  end;
  ////////////////
  function getjsontoDeleteSql(const ajsonWherearray: TJSONArray; tablename: string): string;
  var
  i: Integer;
  ajsonobject: TJSONObject;
  sqlstring:string;
  afieldname,afieldvalue:string;
  sqlwherestring:string;
  afieldoperator:string;
  begin
  sqlwherestring := ' ';
  for i := 0 to ajsonWherearray.Size - 1 do
  begin
  ajsonobject := ajsonWherearray.Get(i) as TJSONObject;
  afieldname := ajsonobject.Pairs[0].JsonString.ToString;
  afieldname := ReplaceStr(afieldname, '"', '');
  afieldvalue := ajsonobject.Pairs[0].JsonValue.Value;
  afieldoperator := ajsonobject.Pairs[1].JsonValue.Value;
  sqlwherestring := sqlwherestring + ' ' + afieldname + ' ' + afieldoperator +
  ' ' + QuotedStr(afieldvalue) + ' and ';
  end;
  sqlwherestring := ' where ' + LeftStr(sqlwherestring,Length(sqlwherestring) - 5);
  sqlstring := ' delete from ' + tablename + sqlwherestring;
  Result := sqlstring;
  end;
  ////////生成Jsonarray
  procedure TForm1.Button1Click(Sender: TObject);
  var
  i: Integer;
  JSONCars: TJSONArray;
  Car, Price: TJSONObject;
  begin
  JSONCars := TJSONArray.Create;
  try
  for i := low(Cars) to high(Cars) do
  begin
  Car := TJSONObject.Create;
  JSONCars.AddElement(Car);
  Car.AddPair('manufacturer', Cars[TCarInfo.Manufacturer]);
  Car.AddPair('name', Cars[TCarInfo.Name]);
  Price := TJSONObject.Create;
  Car.AddPair('price', Cars[TCarInfo.Name]);
  //  Price.AddPair('value', TJSONNumber.Create(Cars[TCarInfo.Price].ToInteger));
  // Price.AddPair('currency', Cars[TCarInfo.Currency]);
  end;
  JSON := JSONCars.ToString;
  memo3.Text := json;
  finally
  JSONCars.Free;
  end;
  end;


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-625296-1-1.html 上篇帖子: SQL事务 下篇帖子: eclipse JEE 实战(maven+server)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表