Android SQLite数据库未创建

Android SQLite数据库未创建,android,database,sqlite,Android,Database,Sqlite,我是android新手,想为我的android应用程序设计数据库,但我不能这样做。我已尽一切努力查找错误,但找不到任何错误,仍然无法创建数据库。请有人在这方面帮助我,提前谢谢 代码如下: 模型类: package com.example.health; public class Daily { private int _id; private String _tips; public Daily(){ } public Daily(int id, String tips){ thi

我是android新手,想为我的android应用程序设计数据库,但我不能这样做。我已尽一切努力查找错误,但找不到任何错误,仍然无法创建数据库。请有人在这方面帮助我,提前谢谢

代码如下:

模型类:

package com.example.health;

public class Daily {
private int _id;
private String _tips;

public Daily(){
}

public Daily(int id, String tips){
    this._id=id;
    this._tips=tips;
}
public Daily(String tips){
    this._tips=tips;
}
public void setID(int id) {
    this._id = id;
}
public void setTips(String tips){
    this._tips=tips;
}
public int getID() {
    return this._id;
}
public String getTips(){
    return this._tips;
}
  }
数据库处理程序:

 package com.example.health;

import java.util.ArrayList;
import java.util.List;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;


public class MyDBHandler extends SQLiteOpenHelper {

private static final int DATABASE_VERSION = 1;
private static final String DATABASE_NAME = "healthDB.db";
private static final String TABLE_DAILY = "daily";

public static final String COLUMN_ID = "_id";
public static final String COLUMN_TIPS = "tips";

public MyDBHandler(Context context, String name, 
        CursorFactory factory, int version) {
    super(context, DATABASE_NAME, factory, DATABASE_VERSION);
}

@Override
public void onCreate(SQLiteDatabase db) {
    String CREATE_DAILY_TABLE = "CREATE TABLE " + TABLE_DAILY + "(" + COLUMN_ID + " INTEGER PRIMARY KEY," + COLUMN_TIPS + " TEXT " + ")";
      db.execSQL(CREATE_DAILY_TABLE);

      }

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    db.execSQL("DROP TABLE IF EXISTS " + TABLE_DAILY);
      onCreate(db);
}
public void addDaily(Daily daily) {
    SQLiteDatabase db = this.getWritableDatabase();
    ContentValues values = new ContentValues();
    values.put(COLUMN_TIPS, daily.getTips());
    db.insert(TABLE_DAILY, null, values);
    db.close();
}
 public List<Daily> getAllDailys(){
        List <Daily> dailyList=new ArrayList<Daily>();

        // Select All Query
        String selectQuery="SELECT * FROM " + TABLE_DAILY;

        SQLiteDatabase db=this.getReadableDatabase();
        Cursor c=db.rawQuery(selectQuery, null);

        // looping through all rows and adding to the list
        if(c.moveToFirst()){
            do{
                Daily daily=new Daily();
                daily.setID(Integer.parseInt(c.getString(0)));
                daily.setTips(c.getString(1));


                // Adding user to the list
                dailyList.add(daily);
            }while(c.moveToNext());
        }
        c.close();
        return dailyList;
}}
请注意,只有在对数据库本身执行某些操作后,才会创建数据库。i、 e.只创建SQLiteOpenHelper类不会在设备中创建数据库,除非您对数据库执行读/写操作

[编辑1]因此,在您执行以下操作之前:

MyDBHandler db = new MyDBHandler(....);
db.addDaily(daily);
将不会创建数据库

[编辑2]您可能还希望更改MyDBHandler类的构造函数:

public MyDBHandler(Context contex) {
    super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
[注意]我假设您没有收到任何错误/异常。

DbClass
我已经测试过了。它工作正常。

出现了什么错误,请粘贴日志。.参考此链接,尝试在末尾添加分号…列_TIPS+TEXT+;;感谢您的帮助,现在我明白了,在执行读/写操作之前,数据库不会被创建。您能告诉我一件事吗?我们如何在单个文本视图中获取数据库中的所有数据,而无需在布局中单击任何按钮。您能告诉我一件事吗?我们如何在布局中的列表视图中获取数据库中的所有数据。例如:我想从布局的列表视图中获取每日表中的所有数据。这取决于另一个问题,先用谷歌搜索,然后提问。我相信你能找到它。我怎样才能同时添加多个条目并同时删除所有数据。我想问的另一件事是您上面的代码,每次运行应用程序时都会添加相同的数据。请回复。谢谢。@Zohaib是您上面的代码,每次运行应用程序时都会添加相同的数据。好这取决于你把代码放在哪里。。如果将其放在onCreate中,则可以,但可以将其放在任意位置,例如按钮或视图的onClickListener上。要添加多个项,只需多次调用db.addDailysomeObject,或者可以在SQLiteOpenHelper类中创建一个方法,以接受对象的数组或ArrayList并添加它们。
package com.example.demo;
import java.util.ArrayList;
import java.util.List;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;


public class MyDBHandler extends SQLiteOpenHelper {

private static final int DATABASE_VERSION = 1;
private static final String DATABASE_NAME = "healthDB.db";
private static final String TABLE_DAILY = "daily";

public static final String COLUMN_ID = "_id";
public static final String COLUMN_TIPS = "tips";

static MyDBHandler mDbHelper;

private MyDBHandler(Context context) {
    super(context, DATABASE_NAME, null, DATABASE_VERSION);
}

public static synchronized MyDBHandler getInstance(Context context) {
    if (mDbHelper == null) {
        mDbHelper = new MyDBHandler(context);
    }
    return mDbHelper;
}

@Override
public void onCreate(SQLiteDatabase db) {
    String CREATE_DAILY_TABLE = "CREATE TABLE " + TABLE_DAILY + "(" + COLUMN_ID + " INTEGER PRIMARY KEY," + COLUMN_TIPS + " TEXT " + ")";
      db.execSQL(CREATE_DAILY_TABLE);

}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    db.execSQL("DROP TABLE IF EXISTS " + TABLE_DAILY);
      onCreate(db);
}
public void addDaily(Daily daily) {
    SQLiteDatabase db = this.getWritableDatabase();
    ContentValues values = new ContentValues();
    values.put(COLUMN_TIPS, daily.getTips());
    db.insert(TABLE_DAILY, null, values);
    db.close();
}
 public List<Daily> getAllDailys(){
        List <Daily> dailyList=new ArrayList<Daily>();

        // Select All Query
        String selectQuery="SELECT * FROM " + TABLE_DAILY;

        SQLiteDatabase db=this.getReadableDatabase();
        Cursor c=db.rawQuery(selectQuery, null);

        // looping through all rows and adding to the list
        if(c.moveToFirst()){
            do{
                Daily daily=new Daily();
                daily.setID(Integer.parseInt(c.getString(0)));
                daily.setTips(c.getString(1));


                // Adding user to the list
                dailyList.add(daily);
            }while(c.moveToNext());
        }
        c.close();
        return dailyList;
}}
MyDBHandler db = MyDBHandler.getInstance(getApplicationContext());
Daily daily = new Daily();
daily.setID(1);
daily.setTips("hello");
db.addDaily(daily);