将JSON对象插入数据库

bpr*_*mas 2 delphi json datasnap

我正在使用Delphi XE2构建一个DataSnap服务器,而且我很难找到插入客户端将我发送到数据库的JSON对象的最佳方法.

这是我收到的对象的格式:

{"PK":0,"FIELD1":"EXAMPLE","FIELD2":5, "DATE":""}
Run Code Online (Sandbox Code Playgroud)

我找到的解决方案是以下代码

with qryDBMethods do
  begin
    SQL.Text := 'SELECT * FROM Table';
    Open;
    Append;
    FieldByName('PK')    .AsInteger := StrToInt(newId.ToString)
    FieldByName('FIELD1').AsString  := Object.Get('FIELD1').JsonValue.Value;
    FieldByName('FIELD2').AsInteger := StrToInt(Object.Get('FIELD2').JsonValue.Value); 
    FieldByName('DATE')  .AsDateTime:= Now;    
    Post;
Run Code Online (Sandbox Code Playgroud)

之后,我将我的查询组件制作成JSON对象并返回给我的客户端,但问题是,这将是一个具有密集表的大应用程序,因此每次我想插入一些东西时都要做"SELECT*"不理想.做这个的最好方式是什么?

RRU*_*RUZ 8

请尝试使用INSERT语句.

with qryDBMethods do
  begin
    SQL.Text := 'INSERT INTO Table (PK, FIELD1, FIELD2) VALUES (:PK, :FIELD1, :FIELD2)';
    ParamByName('PK')    .Value:= StrToInt(newId.ToString)
    ParamByName('FIELD1').Value := Object.Get('FIELD1').JsonValue.Value;
    ParamByName('FIELD2').Value:= StrToInt(Object.Get('FIELD2').JsonValue.Value);    
    ExecSQL();
Run Code Online (Sandbox Code Playgroud)