sqlite数据库未创建 [英] sqlite database not created

查看:123
本文介绍了sqlite数据库未创建的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用的是从流行的记事本示例中学到的标准方法来构建我的 first 应用。

但是我陷入了一个奇怪的问题。

不在/ data / data / package / databases中创建SQLite数据库文件(.db)。我已经从HeadFirst android dev中交叉检查了清单文件和OpenHelper文件。书(我将其用作参考),但我发现自己无法弄清为什么未创建数据库文件。.

是否有任何特殊权限或我们需要打开某些权限才能使其正常运行

奇怪的是,它对于预加载示例的工作正常。表示为记事本示例创建了 .db文件,但是当我尝试时,它失败了。 :(

这是我的文件。

I am using standard approach which I learned from popular notepad example for building my first app.
But I got stuck into a strange problem.
The SQLite database file (.db) is not being created in /data/data/package/databases. I have cross checked manifest file and OpenHelper file from HeadFirst android dev. Book ( I am using it as a reference ) but I found myself unable to figure out why the database file is not created..
Are there any special permissions or something we need to switch on to get it working??
strange thing is that its working fine for pre-loaded examples. means '.db' file is created for notepad example but when I try, it fails. :(
here are my files.

软件包-database.test

1。AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>

<uses-sdk android:minSdkVersion="10" />

<application
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name" >
    <activity
        android:name=".Database_testActivity"
        android:label="@string/app_name" >
    </activity>
</application>

2.TestOpenHelper.java

package database.test;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

public class TestOpenHelper extends SQLiteOpenHelper {

TestOpenHelper(Context context){
    super(context,"mydb.db",null,1);
}
@Override
public void onCreate(SQLiteDatabase database){
    database.execSQL("create table test_1 " + " (field1 integer primary key, field2 integer);");
}
public void onUpgrade (SQLiteDatabase database, int oldVersion, int newVersion){
    database.execSQL("drop table if exists test1");
    onCreate(database);
}
}

3.Database_testActivity.java

package database.test;

import android.app.Activity;
import android.os.Bundle;
import android.widget.ListView;

public class Database_testActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    ListView listview = (ListView)findViewById(R.id.test_list);
    TestAdapter ta = new TestAdapter();
    listview.setAdapter(ta);

    TestOpenHelper openHelper = new TestOpenHelper(this);
}
}   

我知道这是一个非常基本的问题,但是我有过去十五天一直在尝试解决此问题,现在我感到非常沮丧。

请帮助..

I know its a very basic question, but I have been trying to solve this for last fifteen days and now I am completely frustrated.
Please help ..

推荐答案

更改此项:

database.execSQL("create table test_1 " + " (field1 integer primary key, field2 integer)");

和这个 TestOpenHelper openHelper = new TestOpenHelper(this); 更改为 SQLiteDatabase db = new TestOpenHelper(this).getWritableDatabase();

您真的没有在创建数据库后,您只能创建 SQLiteOpenHelper 的实例,但是对于创建或打开数据库,则必须使用 getWritableDatabase() getReadableDatabase()方法。

You really didn't created database, you only create instance of your SQLiteOpenHelper but for create or open database you have to use getWritableDatabase() or getReadableDatabase() method.

完全来自文档:


创建和/或打开将用于读取和
书写的数据库。

Create and/or open a database that will be used for reading and writing.

这篇关于sqlite数据库未创建的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆