Android平台使用SQLite数据库存储数据

it2022-05-05  139

  创建一个DataBaseHelper的类,这个类是继承SQLiteOpenHelper类的,这个类中包含创建数据库、打开数据库、创建表、添加数据和查询数据的方法。代码如下:

package com.example.message_board;

import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.util.ArrayList;import java.util.List;

import android.R.bool;import android.R.integer;import android.content.Context;import android.database.Cursor;import android.database.SQLException;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteException;import android.database.sqlite.SQLiteOpenHelper;import android.util.Log;

public class DataBaseHelper extends SQLiteOpenHelper

{ private static String DB_PATH= ""; private static String DB_NAME="Message.db"; private SQLiteDatabase myDataBase; private final Context myContext; /** * Constructor * Takes and keeps a reference of the passed context in order to access to the application assets and resources. * @param context */ public DataBaseHelper(Context context) {   super(context, DB_NAME, null, 1);   this.myContext = context;   Log.v("DB_PATH1",DB_PATH);   DB_PATH=myContext.getDatabasePath(DB_NAME).getPath();   Log.v("DB_PATH2",DB_PATH); } /** * Creates a empty database on the system and rewrites it with your own database. * */ public void createDataBase() throws IOException

{   boolean dbExist = checkDataBase();   if(dbExist)   {     //do nothing - database already exist   }   else   {     //By calling this method and empty database will be created into the default system path     //of your application so we are gonna be able to overwrite that database with our database.     this.getReadableDatabase();     try     {       copyDataBase();     }

     catch (IOException e)     {       throw new Error("Error copying database");     }   } } /** * Check if the database already exist to avoid re-copying the file each time you open the application. * @return true if it exists, false if it doesn't */ private boolean checkDataBase() {   SQLiteDatabase checkDB = null;   try   {     String myPath = DB_PATH;     checkDB = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READONLY);   }   catch(SQLiteException e)   {     //database does't exist yet.   }   if(checkDB != null)   {     checkDB.close();   }   return checkDB != null ? true : false; } /** * Copies your database from your local assets-folder to the just created empty database in the * system folder, from where it can be accessed and handled. * This is done by transfering bytestream. * */ private void copyDataBase() throws IOException {   //Open your local db as the input stream   InputStream myInput = myContext.getAssets().open(DB_NAME);   // Path to the just created empty db   String outFileName = DB_PATH;   //Open the empty db as the output stream   OutputStream myOutput = new FileOutputStream(outFileName);   //transfer bytes from the inputfile to the outputfile   byte[] buffer = new byte[1024];   int length;   while ((length = myInput.read(buffer))>0)   {     myOutput.write(buffer, 0, length);   }   //Close the streams   myOutput.flush();   myOutput.close();   myInput.close(); } public void openDataBase() throws SQLException {   //Open the database   String myPath = DB_PATH ;   Log.v("myPath",myPath);   myDataBase = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READWRITE); }

//create a table public void createTable() throws SQLException {   try   {     myDataBase.execSQL("CREATE TABLE MessageTable (_id INTEGER PRIMARY KEY AUTOINCREMENT,content TEXT);");   }   catch (Exception e)   {     // TODO: handle exception   } }

//insert the data to the database public void insertrecord(String contentString) throws SQLException {   try   {     //String content=contentString;     String sql="insert into MessageTable(content) values('"+contentString+"');";     Log.v("aaa", sql);     myDataBase.execSQL(sql);     Log.v("aaa_a", sql);   }   catch (Exception e)   {     Log.v("aaa_e", e.toString());   } }

//select record public List<String> selectrecord() throws SQLException {   List<String> list = new ArrayList<String>();   //String[] strArr = new String[list.size()];   //list.toArray(strArr);   try   {     Cursor cr = myDataBase.rawQuery("select * from MessageTable", null);     while(cr.moveToNext())     {       //Content+=cr.getString(1);       Log.v("Record",cr.getString(1));       list.add(cr.getString(1));     }   }   catch (Exception e)   {     // TODO: handle exception     Log.v("ERR", e.toString());   }   return list; } @Override public synchronized void close() { if(myDataBase != null) myDataBase.close(); super.close(); } @Override public void onCreate(SQLiteDatabase db) { } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { }

}

转载于:https://www.cnblogs.com/wucaiyun1/p/4668038.html

相关资源:Android使用SharedPreferences和SQLite数据库实现数据存储

最新回复(0)