利用Jsonarray拼接sql

简介:

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[i][TCarInfo.Manufacturer]);
      Car.AddPair('name', Cars[i][TCarInfo.Name]);
      Price := TJSONObject.Create;
      Car.AddPair('price', Cars[i][TCarInfo.Name]);
    //  Price.AddPair('value', TJSONNumber.Create(Cars[i][TCarInfo.Price].ToInteger));
     // Price.AddPair('currency', Cars[i][TCarInfo.Currency]);
    end;
    JSON := JSONCars.ToString;
    memo3.Text := json;
  finally
    JSONCars.Free;
  end;
end;
















本文转自鹅倌51CTO博客,原文链接: http://blog.51cto.com/kaixinbuliao/1611083,如需转载请自行联系原作者



相关文章
|
2月前
|
SQL 关系型数据库 MySQL
详解 pypika 模块:SQL 语句生成器,让你再也不用为拼接 SQL 语句而发愁
详解 pypika 模块:SQL 语句生成器,让你再也不用为拼接 SQL 语句而发愁
139 4
【干货】sql-labs、请求方式、注入类型、拼接方式
【干货】sql-labs、请求方式、注入类型、拼接方式
|
7月前
|
SQL Oracle 关系型数据库
sql语句两个字段合并或者两个字段拼接显示
sql语句两个字段合并或者两个字段拼接显示
|
7月前
|
存储 SQL Oracle
|
SQL
一条集多表查询、字段与字段拼接、合并每张表共同字段、新增列并赋值的SQL
一条集多表查询、字段与字段拼接、合并每张表共同字段、新增列并赋值的SQL
70 0
|
SQL 存储 数据库连接
【批量添加】-拼接sql字符串
【批量添加】-拼接sql字符串
135 0
|
SQL Oracle 关系型数据库
【SQL系列】拼接列值
使用函数 CONCAT 可以拼接多列的值。在 DB2、Oracle 和 PostgreSQL 中,函数 CONCAT 的简写为 ||。
220 1
|
SQL
mybatis-Plus 之 apply 拼接SQL
apply 拼接SQL 本章节将介绍 apply 方法,该方法用来拼接 SQL 语句。它可用于动态的给数据库函数传入参,例如:
2670 0
|
SQL 存储 缓存
SQL注入、占位符拼接符
SQL注入、占位符拼接符
473 0
.Net ADO拼接带参数的SQL语句
.Net ADO拼接带参数的SQL语句
159 0

热门文章

最新文章