建立和删除数据库

最开始出现了空指针,mDbHelper = DBHelper.getInstance(mContext);有问题,最后找到原因,单例的位置逻辑判断错误,应该是if (mInstance == null)而不是if (mInstance != null)


DBHelper.java

package com.example.msqlite;

import android.R.integer;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;

public class DBHelper extends SQLiteOpenHelper
{
	private static DBHelper mInstance = null;//单例模式
	//数据库名称
	public static final String DATABASE_NAME="xys.db";
	//数据库版本号
	public static final int DATABASE_VERSION = 1;
	//数据库SQL语句,添加一个表
	private static final String NAME_TABLE_CREATE = "create table test(" + "_id INTEGER PRIMARY KEY AUTOINCREMENT," + "name TEXT,"+"hp INTEGER DEFAULT 100,"+ "mp INTEGER DEFAULT 100,"+ "number INTEGER);"; 
	

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

	//单例模式
	static synchronized DBHelper getInstance(Context context){
		if (mInstance == null)
		{
			mInstance = new DBHelper(context);
		}
		return mInstance;
		
	}
	
	@Override
	public void onCreate(SQLiteDatabase db)
	{
		db.execSQL(NAME_TABLE_CREATE);
		
	}

	@Override
	public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
	{
		
		/**可以拿到当前数据库的版本信息 与之前数据库的版本信息   用来更新数据库**/
	}
	
	//删除数据库
	public boolean deleteDatabase(Context context){
		return context.deleteDatabase(DATABASE_NAME);
	}
	
}

MainActivity.java

package com.example.msqlite;

import android.os.Bundle;
import android.app.Activity;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;

public class MainActivity extends Activity {
	
	 DBHelper mDbHelper = null;
	 SQLiteDatabase mdb = null;
	 Context mContext = null; 
	

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    	super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        mContext = this;
       //创建DBHelper对象
       mDbHelper = DBHelper.getInstance(mContext);
       //调用getReadableDatabase方法打开数据库,如果不存在就创建 如果存在就打开
       mdb = mDbHelper.getReadableDatabase();
       
       Button addButton = (Button) findViewById(R.id.add);
       addButton.setOnClickListener(new OnClickListener()
	{
		
		@Override
		public void onClick(View v)
		{
			Toast.makeText(MainActivity.this, "成功创建数据库", Toast.LENGTH_LONG).show();    
		}
	});
       
       Button delButton = (Button) findViewById(R.id.delete);
       delButton.setOnClickListener(new OnClickListener()
	{
		
		@Override
		public void onClick(View v)
		{
			mDbHelper = DBHelper.getInstance(MainActivity.this);
			mdb = mDbHelper.getReadableDatabase();
			mDbHelper.close();
			mDbHelper.deleteDatabase(MainActivity.this);
			 Toast.makeText(MainActivity.this, "成功删除数据库", Toast.LENGTH_LONG).show(); 
		}
	});
       
       
    }


    
    
}

activity_main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

    <Button
        android:id="@+id/add"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="增加数据库" />
    <Button
        android:id="@+id/delete"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="删除数据库" />

</LinearLayout>


你可能感兴趣的:(建立和删除数据库)