【问题标题】:How to view couchbase lite database on windows?如何在 Windows 上查看 couchbase lite 数据库?
【发布时间】:2020-01-13 06:41:15
【问题描述】:

我是 couchbase lite 实现的新手,我在 Android 平台上工作,我已经创建了一个数据库,在其中保存了一个简单的文档。现在我想提取数据库并查看保存在其中的文档。我在 raw 文件夹中放置了一个示例 json,从 raw 读取并转换为 hashmap。 以下是所有细节

代码

DatabaseManager 类创建数据库

package com.example.couchbasesample;


import android.content.Context;

import com.couchbase.lite.CouchbaseLiteException;
import com.couchbase.lite.Database;
import com.couchbase.lite.DatabaseConfiguration;

import java.io.File;

public class DatabaseManager {

    private final static String DATABASE_NAME = "couchbase_test";

    public Database database;

    private static DatabaseManager instance = null;

    public DatabaseManager(Context context) {

        // Set database configuration
        try {

            // Set Database configuration
            DatabaseConfiguration config = new DatabaseConfiguration(context);
            File dir = context.getDir("COUCH_ANDROID",Context.MODE_PRIVATE);
            config.setDirectory(dir.toString());

            // Create / Open a database with specified name and configuration
            database = new Database(DATABASE_NAME, config);



        }
        catch (CouchbaseLiteException e) {
            e.printStackTrace();
        }

    }



    public static DatabaseManager getSharedInstance(Context context) {
        if (instance == null) {
            instance = new DatabaseManager(context);
        }
        return instance;
    }


}

主活动

package com.example.couchbasesample;

import android.content.Context;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

import androidx.appcompat.app.AppCompatActivity;

import com.couchbase.lite.MutableDocument;
import com.google.gson.Gson;

import org.json.JSONObject;

import java.io.InputStream;
import java.util.HashMap;

import butterknife.BindView;
import butterknife.ButterKnife;

public class MainActivity extends AppCompatActivity {
    private DatabaseManager dbMgr;

    @BindView(R.id.btnSave)
    Button btnSave;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ButterKnife.bind(this);


        // Initialize couchbase lite database manager
        dbMgr = new DatabaseManager(this);

        btnSave.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                try {
                    JSONObject customerJSON = new JSONObject(getFileFromResources(MainActivity.this, "samplecustomer"));
                 /*   HashMap<String, JSONObject> customerTest = new HashMap<>();
                    customerTest.put("1", customerJSON);*/
                       HashMap<String, Object> yourHashMap = new Gson().fromJson(customerJSON.toString(), HashMap.class);

                    MutableDocument doc = new MutableDocument(yourHashMap);
                    // 3. Save document to database.
                    dbMgr.database.save(doc);
                    Toast.makeText(MainActivity.this, "saved", Toast.LENGTH_LONG).show();

                } catch (Exception e) {
                    Toast.makeText(MainActivity.this, e.getMessage(), Toast.LENGTH_LONG).show();
                    e.printStackTrace();
                }
            }
        });
    }


    public static String getFileFromResources(Context context, String fileName) {
        String json = null;
        try {
            InputStream is = context.getResources().openRawResource(
                    context.getResources().getIdentifier(fileName,
                            "raw", context.getPackageName()));
            int size = is.available();
            byte[] buffer = new byte[size];
            is.read(buffer);
            is.close();
            json = new String(buffer, "UTF-8");
        } catch (Exception ex) {
            ex.printStackTrace();
        }
        return json;
    }
}

我尝试了什么

我使用 android studio 中的“设备文件资源管理器”提取了数据库,当我保存 app_COUCH_ANDROID 文件夹并在 DB Browser for SQLite 中打开 .sqlite 文件时,无法查看保存的文档,而是随机显示我无法理解的数据。

*除此之外,我研究并找到了以下查看器,但无法将其用作 MAC OS。

https://github.com/couchbaselabs/CouchbaseLiteViewer*

如何查看 couchbase lite 数据库。有人可以帮我解决这个问题吗?任何帮助将不胜感激。

【问题讨论】:

    标签: android-studio couchbase android-database couchbase-lite


    【解决方案1】:

    如果您需要查找存储在数据库中的文档,请在您的应用程序中使用getDocument 或任何Query APIs

    如果你想在应用内容之外查询数据库,那么你可以使用cblite tool。这是一个命令行工具,可让您打开和检查 cblite2 数据库。

    您为什么要在嵌入数据库的应用程序上下文之外查找文档?您无法使用标准的 sqlite 浏览器查看数据,因为数据是二进制编码并以Fleece 格式存储的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-08
      • 1970-01-01
      相关资源
      最近更新 更多