在Android中导入DB的最佳方法

在Android中导入DB的最佳方法,android,json,sqlite,csv,Android,Json,Sqlite,Csv,我需要一些关于将数据从服务器导入本地设备的良好实践的建议。数据量不是很大~1-3 MB,因此,我必须在以下两者之间进行选择: 接收json-解析它,为简单起见使用GSON lib,并将数据插入本地数据库 以cvs格式接收整个数据库,然后填充我的数据库,如所述 或者直接从服务器端接收整个数据库,并像本地数据库一样使用它 我知道,每种方法都有效,但如果有人能给出一些参数,我们将不胜感激。您可以在应用程序中提供一个已填充的db(将其放入资产文件夹) 然后,您所要做的就是使用时间戳字段或任何sql请求在

我需要一些关于将数据从服务器导入本地设备的良好实践的建议。数据量不是很大~1-3 MB,因此,我必须在以下两者之间进行选择:

  • 接收json-解析它,为简单起见使用GSON lib,并将数据插入本地数据库
  • 以cvs格式接收整个数据库,然后填充我的数据库,如所述
  • 或者直接从服务器端接收整个数据库,并像本地数据库一样使用它

  • 我知道,每种方法都有效,但如果有人能给出一些参数,我们将不胜感激。

    您可以在应用程序中提供一个已填充的db(将其放入资产文件夹)

    然后,您所要做的就是使用时间戳字段或任何sql请求在应用程序上更新字段,以查找数据库中不存在的过期字段或条目


    通过这种方式,您可以避免在应用程序中进行无用的过程来填充数据库,并且您可以将查询限制在服务器上,在指定的时间之后针对数据,这次是数据库的最后一次更新。

    对我有效的是我的php文件正在从sql读取数据

    所以我使用缓冲区阅读器来读取这些文件上的内容,它既快速又简单

    为我工作

    public String getInternetData() throws Exception{
    
            BufferedReader in=null;
            String data=null;
            try{
                HttpClient client=new DefaultHttpClient();
                URI website=new URI("http://address of that paticular page.php");
                HttpGet request=new HttpGet();
    
                request.setURI(website);
    
                HttpResponse response=client.execute(request);
                HttpEntity ent=response.getEntity();
                String dt=EntityUtils.toString(ent);
    
    
                data=dt;
                //in=new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
    
    
            }catch(Exception e){
    
    
            }
    
            return data; 
    

    tl;博士

    我将保留第一个解决方案

    参数

    解决方案1

    JSON是一个标准!您可以使用任何您想要的库,如果您有任何问题,甚至可以从一个库更改到另一个库!此外,JSON是一种轻量级格式

    此外,通过这种方式传输数据,您将能够存储您想要的数据:使用相同的方案或另一个方案;您将能够删除无用的数据

    唯一的问题是:您无法验证您收到的数据是否与您所想的一样。您必须在手机上进行验证

    解决方案2

    我认为这个解决方案和JSON的解决方案是一样的,但是使用了一种非常难看的格式。。。我绝对不会用它

    解决方案3

    您将通过网络发送一个二进制文件。如果发生了不好的事情,在尝试打开数据库并看到它失败之前,您将无法知道它


    此外,您还必须遵守服务器决定的DB方案。我认为最好让你的设备自己处理DB方案。服务器负责传输格式正确的数据。然后,您的设备负责以它想要的方式存储它们。

    选择这种方法时,您可能需要查看Jeff Gilfelt的SqliteAssetPer。我写了一个关于它的小教程:如果应用程序和服务器中的数据可以单独修改,那么您需要编写某种数据同步逻辑。