未创建SQLite数据库文件

时间:2016-02-13 20:56:08

标签: java android sqlite

未在Android设备监视器> DBMS>文件浏览>数据中创建SQLite数据库文件(.db)。此目录中显示没有.db文件。我发现自己无法弄清楚为什么没有创建数据库文件。 这是我的档案。

MainActivity.java

package com.example.zohaib.database;

import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;

public class MainActivity extends AppCompatActivity {

    SQLiteOpenHelper sqLiteOpenHelper;
    SQLiteDatabase sqLiteDatabase;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

        sqLiteOpenHelper = new DBConnection(this);
        sqLiteDatabase = sqLiteOpenHelper.getWritableDatabase();

    }
}

DBConnection.java

package com.example.zohaib.database;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;
import android.widget.Toast;

public class DBConnection extends SQLiteOpenHelper {

    private static final int DATABASE_VERSION = 1;
    private static final String DATABASE_NAME = "products.db";
    private static final String TABLE_PRODUCTS = "products";
    private static final String COLUMN_ID = "id";
    private static final String COLUMN_PRODUCTNAME = "productName";



    public DBConnection(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
            String query ="CREATE TABLE " + TABLE_PRODUCTS + " (" +
                        COLUMN_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
                        COLUMN_PRODUCTNAME + " TEXT " +
                        ")";
            db.execSQL(query);
            Log.d("Create Database:", "Successful");
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        db.execSQL("DROP TABLE IF EXISTS " + TABLE_PRODUCTS);
        onCreate(db);
    }
}

2 个答案:

答案 0 :(得分:2)

您在一个创建表脚本中使用了两个表名。

更改

String query ="CREATE TABLE test_1 " + TABLE_PRODUCTS + " (" +
                    COLUMN_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
                    COLUMN_PRODUCTNAME + " TEXT " +
                    ")";

String query ="CREATE TABLE " + TABLE_PRODUCTS + " (" +
                    COLUMN_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
                    COLUMN_PRODUCTNAME + " TEXT " +
                    ");";

答案 1 :(得分:1)

更新: 只需从您正在测试的设备上删除/卸载该应用并修复查询,即添加分号";"在末尾。重新构建应用程序。

您可以使用onUpgrade()通过递增版本来重新创建数据库表。你直接调用生命周期方法也不好。

工作示例代码(不完美):

package com.example.zohaib.database;

import android.content.ContentValues;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;

public class DBConnection extends SQLiteOpenHelper {
    // change version with change in schema or db changes
    private static final int DATABASE_VERSION = 2;
    private static final String DATABASE_NAME = "products.db";
    private static final String TABLE_PRODUCTS = "products";
    private static final String COLUMN_ID = "_id";
    private static final String COLUMN_PRODUCTNAME = "productName";



    public DBConnection(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        createTable(db);
        Log.d("From onCreate : ", " successfully created.");
    }

    private void createTable(SQLiteDatabase db) {
        String query ="CREATE TABLE " + TABLE_PRODUCTS + " (" +
                COLUMN_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
                COLUMN_PRODUCTNAME + " TEXT " +
                ");";
        db.execSQL(query);
        Log.d("Create Database:", "Successful");

        ContentValues contentValues = new ContentValues();
        contentValues.put(COLUMN_PRODUCTNAME, "Sample Data");
        db.insert(TABLE_PRODUCTS, null, contentValues);
        Log.d("Insert Row:", "Insert Row Successful");
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        db.execSQL("DROP TABLE IF EXISTS " + TABLE_PRODUCTS);
        createTable(db);
        Log.d("From onUpgrade : ", " successfully upgraded.");
    }

    @Override
    public void onDowngrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        db.execSQL("DROP TABLE IF EXISTS " + TABLE_PRODUCTS);
        createTable(db);
        Log.d("From onDowngrade : ", " successfully Downgraded.");
    }
}

这里是数据库文件。

Here Goes the Database files.