json
  • delphi
  • datasnap
  • 2012-02-09 73 views 2 likes 
    2

    我在Delphi XE2中构建了一个DataSnap服务器,并且我很难找出插入客户端将我发送到数据库的JSON对象的最佳方法。插入一个JSON对象到数据库中

    下面是我收到的对象的格式:

    {"PK":0,"FIELD1":"EXAMPLE","FIELD2":5, "DATE":""} 
    

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

    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; 
    

    在那之后,我有我的查询组件制作成一个JSON对象并返回给我的客户端,但问题是,这将是一个密集表的大型应用程序,因此每次插入内容时执行“SELECT *”并不理想。做这个的最好方式是什么?

    回答

    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(); 
    
    2

    如果有什么问题是数据量,当你打开一个Select * From Table,为什么不这样做Select * From Table Where 1 <> 1

    这样你就可以在不加载任何结果的情况下插入。

    其他选项可以改为插入脚本。

    +0

    +1这可以从我在他的方法中看到的更好,但选择缓慢,因为它会超过所有记录 – ComputerSaysNo 2012-02-09 15:11:44

    相关问题