Android系列之SQLite与Android Studio的数据交互

来源:互联网 发布:2016电视盒子破解软件 编辑:程序博客网 时间:2024/06/13 12:32

1.创一个DbHelper类,实际代码如下:

[java] view plain copypackage com.laci.db;  import android.content.Context;  import android.database.sqlite.SQLiteDatabase;  import android.database.sqlite.SQLiteOpenHelper;  import android.util.Log;  /**  * Created by Laci on 2017/6/25.  */  public class DbHelper extends SQLiteOpenHelper{      /**      *      * @param context 上下文      * @param name 数据库的名字      * @param factory 数据库工厂,null      * @param version  数据库的版本      */      public DbHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {          super(context, name, factory, version);      }      @Override      public void onCreate(SQLiteDatabase db) {      }      @Override      public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {      }  }  ``

2、然后再相同的目录下创一个DbManager类,就可以了

[java] view plain copypackage com.laci.db;  import android.content.Context;  import android.database.sqlite.SQLiteDatabase;  import android.os.Environment;  import com.zking.laci.android_project.R;  import java.io.File;  import java.io.FileOutputStream;  import java.io.InputStream;  /**  * Created by Laci on 2017/6/27.  */  public class DbManager {      public static final String DB_NAME = "wenwen.db"; //数据库名字      public static final String PACKAGE_NAME ="com.zking.laci.android_project";//包名      public static final String DB_PATH = "/data" + Environment.getDataDirectory().getAbsolutePath() + "/" + PACKAGE_NAME;   //数据库的绝对路径( /data/data/com.*.*(package name))      private SQLiteDatabase db;      private Context context;      public DbManager(Context context) {          this.context = context;      }      //对外提供的打开数据库接口      public void openDataBase() {          this.db = this.openDataBase(DB_PATH + "/databases");      }      //获取打开后的数据库      public SQLiteDatabase getDb() {          return this.db;      }      // 本地打开数据方法      private SQLiteDatabase openDataBase(String filePath) {          try {              File file = new File(filePath);              if (!file.exists()) { //判断文件是否存在                  //通过输入流和输出流,把数据库拷贝到"filePath"下                  file.mkdir();                  File file2=new File(filePath+"/"+DB_NAME);                  if (!file2.exists()) {                      InputStream is = context.getResources().openRawResource(R.raw.wenwen);//获取输入流,使用R.raw.test资源                      FileOutputStream fos = new FileOutputStream(file2);                      byte[] buffer = new byte[1024];                      int readCount;                      while ((readCount = is.read(buffer)) > 0) {                          fos.write(buffer, 0, readCount);                      }                      fos.close();                      is.close();                  }              }  //打开数据库              SQLiteDatabase db =new DbHelper(context,"wenwen.db",null,2).getWritableDatabase();              return db;          } catch (Exception e) {              e.printStackTrace();          }          return null;      }      //关闭数据库      public  void closeDataBase()      {          if(this.db!=null)              db.close();      }  }  

3.调用

[java] view plain copyDbManager dbManager=new DbManager(getApplicationContext());         dbManager.openDataBase();