首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQLite getwritableDatabase返回null

SQLite getwritableDatabase返回null
EN

Stack Overflow用户
提问于 2018-07-12 22:22:19
回答 1查看 530关注 0票数 0

在尝试为我正在工作的项目开发一些单元测试时,我遇到了需要测试DB-behaviour的问题。我正在尝试创建内存中的DB(SQLite)

虽然我认为这个相当基本的测试可以按要求完成,但它总是返回空数据库,这并不是我所期望的。

代码语言:javascript
复制
package be.wgkovl.evdt.Util;

import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.test.mock.MockContext;

import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.powermock.modules.junit4.PowerMockRunner;

@RunWith( PowerMockRunner.class )
public class ClassForStack {


    SQLiteDatabase db;
    Context context;

    private Cursor test() {
        if (db != null) {
            return db.rawQuery("Select * from myTable", new String[]{});
        } else {
            System.out.println("Db is null :-(");
        }
        return null;
    }

    private String[] emtpyArgument = new String[]{};


    @Before
    public void setup() {
        System.out.println("Setting up");
        context = new MockContext();

        SQLiteOpenHelper dummy = new SQLiteOpenHelper(context, "SomeName.memory", null, 1) {
            @Override
            public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
            }

            @Override
            public void onCreate(SQLiteDatabase db) {
            }
        };


        String basicInitQuery = "CREATE TABLE IF NOT EXISTS myTable(id INTEGER PRIMARY KEY DESC, value TEXT)";
        String basicInsertQuery = "INSERT INTO myTable(id, value) VALUES (1,?)";
        db = dummy.getWritableDatabase();

    }

    @Test
    public void baseDbTest() {
        Cursor c = test();
        if (c != null) {
            System.out.println(c.getColumnNames());
            System.out.println(c.getColumnCount());
            System.out.println("Starting test");
        }
    }
}

我在Stackoverflow上研究了几种不同的解决方案,但似乎没有一种能够为我指出正确的解决方案。它们在这里列出

getWritableDatabase returns null

Android Sqlite always null even after calling getWritableDatabase()

Create SQLite database in android

SQLite getReadableDatabase() returns NULL

SQLiteOpenHelper failing to call onCreate?

我做错了什么,我得到了一个空的数据库,但没有任何类型的错误或异常?

EN

回答 1

Stack Overflow用户

发布于 2018-07-12 22:37:50

您是否忘记在onCreate()中创建表?

代码语言:javascript
复制
  db.execSQL(basicInitQuery);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51308102

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档