问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

在项目中用SQLite数据库,数据库文件放在哪里啊?

发布网友 发布时间:2022-04-07 18:19

我来回答

6个回答

懂视网 时间:2022-04-07 22:41

package com.example.sqliteopenhelper; 2 3 import android.content.Context; 4 import android.database.sqlite.SQLiteDatabase; 5 import android.database.sqlite.SQLiteDatabase.CursorFactory; 6 import android.database.sqlite.SQLiteOpenHelper; 7 import android.util.Log; 8 9 public class MydbOpenHelper extends SQLiteOpenHelper{ 10 11 public MydbOpenHelper(Context context, String name, CursorFactory factory, int version){ 12 super(context, name, factory, version); 13 } 14 15 @Override 16 public void onCreate(SQLiteDatabase db) { 17 String createtable = "create table user(id int, name varchar(20), password char(8))"; 18 db.execSQL(createtable); 19 System.out.println("MydbOpenHelper.onCreate()"); 20 21 } 22 23 @Override 24 public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 25 Log.i("MydbOpenHelper","oldVersion" + oldVersion + "newVersion" + newVersion); 26 System.out.println("MydbOpenHelper.onUpgrade()"); 27 28 } 29 } MydbOpenHelper

 

技术分享
 1 package com.example.sqliteopenhelper;
 2 
 3 import android.app.Activity;
 4 import android.content.ContentValues;
 5 import android.database.Cursor;
 6 import android.database.sqlite.SQLiteDatabase;
 7 import android.os.Bundle;
 8 import android.util.Log;
 9 import android.view.Menu;
10 import android.view.MenuItem;
11 import android.view.View;
12 
13 public class MainActivity extends Activity {
14 SQLiteDatabase db = null;
15 
16  @Override
17 protected void onCreate(Bundle savedInstanceState) {
18  super.onCreate(savedInstanceState);
19  setContentView(R.layout.activity_main);
20  
21  MydbOpenHelper dbhelper = new MydbOpenHelper(this, "userinfo.db", null, 1);
22  db = dbhelper.getWritableDatabase();
23 
24  }
25 
26 public void insert(View v){
27  ContentValues c = new ContentValues();
28  //c.put("id", 2);
29  //c.put("name", "user222");
30  //c.put("password", "222");
31  
32  c.put("id", 1);
33  c.put("name", "user1");
34  c.put("password", "222");
35  
36  db.insert("user", null, c);
37  }
38 public void delete(View v){
39  db.delete("user", "id=? and name=?", new String[]{"1","user1"});
40  }
41 public void update(View v){
42  ContentValues c = new ContentValues();
43  c.put("name", "user222");
44  c.put("password", "88888888");
45  db.update("user", c, "id=?", new String[]{"2"});
46  }
47 public void query(View v){
48  String[] colums = {"id", "name", "password"};
49  Cursor c = db.query("user", colums, null, null, null, null, null);
50  
51  while(c.moveToNext()){
52  int id = c.getInt(c.getColumnIndex("id"));
53  String username = c.getString(c.getColumnIndex("name"));
54  String password = c.getString(c.getColumnIndex("password"));
55  Log.i("sqliteopenhelper", id + "," +username+"," +password);
56  }
57  }
58 }
MainActivity.java

 

006_02SQLite_OpenHelper

标签:

热心网友 时间:2022-04-07 19:49

要在Android系统中操作SQLite数据库,是通过Android的核心类SQLiteDatabase类来实现的,通常情况下为了数据库升级的需要以及使用方便,我们会选择继承SQLiteOpenHelper抽像类,但是SQLiteOpenHelper会将数据库文件创建在一个固定的目录(内存的/data/data/<package name/databases>目录中),如果你想使用已经存在的数据库文件也就是说数据库会和程序一起发布,就得通过使用SQLiteDabase的静态方法OpenOrCreateDatabase()方法来得到SQLiteDabase对象,下面是一个具体操作类:
package net.my.;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import net.my.jokebook.R;
import android.app.Activity;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
public class DBHelper {
//得到SD卡路径
private final String DATABASE_PATH = android.os.Environment
.getExternalStorageDirectory().getAbsolutePath()
+ "/joke"; 
private final Activity activity;
//数据库名
private final String DATABASE_FILENAME;
public DBHelper(Context context) {
    // TODO Auto-generated constructor stub
//这里直接给数据库名
  DATABASE_FILENAME = "jokebook.db3";
  activity = (Activity)context;

//得到操作数据库的对象
public  SQLiteDatabase openDatabase()
{
  try
  {
   boolean b = false;
   //得到数据库的完整路径名
   String databaseFilename = DATABASE_PATH + "/" + DATABASE_FILENAME;
//将数据库文件从资源文件放到合适地方(资源文件也就是数据库文件放在项目的res下的raw目录中)
   //将数据库文件复制到SD卡中   File dir = new File(DATABASE_PATH);
   if (!dir.exists())
     b = dir.mkdir();
   //判断是否存在该文件
   if (!(new File(databaseFilename)).exists())
   {     
    //不存在得到数据库输入流对象
    InputStream is = activity.getResources().openRawResource(
      R.raw.jokebook);
    //创建输出流
    FileOutputStream fos = new FileOutputStream(databaseFilename);
    //将数据输出
    byte[] buffer = new byte[8192];
    int count = 0;
    while ((count = is.read(buffer)) > 0)
    {
     fos.write(buffer, 0, count);
    }
    //关闭资源
    fos.close();
    is.close();
   }
//得到SQLDatabase对象
   SQLiteDatabase database = SQLiteDatabase.openOrCreateDatabase(
     databaseFilename, null);   
   return database;   
  }
  catch (Exception e)
  {
   System.out.println(e.getMessage());
  }
  return null;
}
}
写完这个类之后,就能得到SQLiteDatabase对象,就能对数据库操作了

热心网友 时间:2022-04-07 21:07

Before trying this code, please find this line in below code:

DB_NAME here is the name of your database. It is assumed that you have a copy of the database in the assets folder, so for example if your database name is ordersDB, then the value of DB_NAME will be ordersDB,

Keep the Database in assets folder & then follow below:

DataHelper class:

Write a DataAdapter class like:

Now you can use it like:

NOTE:

热心网友 时间:2022-04-07 22:41

使用SQLiteOpenHelper的好处就是随着你应用的卸载数据库也一同卸载的,如果是拷入Sdcard的话还得代码操作。。。

热心网友 时间:2022-04-08 00:33

如果你放在res中是找不到的 去搜个关于操作SQLiteOpenHelper的小DEMO.

热心网友 时间:2022-04-08 02:41

如果你是通过SQLiterOpenHelper创建的应该在Data\data\你的包名里面的database里面
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
洗澡被偷拍该如何维权呢? 照片被别人用于网上嫖娼怎么维权 被偷拍怎么维权 带“坤”的诗句 乾端坤倪意思和来源是什么 水瓶座男最配什么星座 客厅里为什么有臭味 做糖炒栗子还没熟该怎么补救 抽油烟机一开防盗门的风很大怎么解决? 微信墙签到系统 vivoy67手机系统升级好还是不升级好?包采纳 12312交罚款选错银行支付怎么搞? 交管12123显示有罚款,交完罚款过两天钱退回微信了是怎么回事? 交管12123交了罚款后来又显示处理失败,钱没退都一个月了怎么办? 用交管12123处理违章扣分罚款半路怎么停止 交管12123app罚款已缴,但未成功,钱怎么退?都一个多月了 12123交罚款处理失败,被扣钱了怎么退? 交管12123上交了罚款违章没下钱能退回来吗 交管12123交罚金的时候因为操作失误缺要多收我一百块钱,我该如何解决? 你好,交管12123的违章款退回来吗? 从交管12123上面交罚款,单号输入错了可交上费了怎么办? 东台信用社金融黑名单怎样查找 东台征信报告在哪打 这信用社贷款20万 如果就是我每个月往进还1万 那利息是怎么算呀 是算20万的利 dnf魔枪士转什么职业刷图厉害 公众号粉丝迁移要用到公证函吗? 怎么将华为mate pad pro的屏幕反过来? 2021年led透明屏会不会涨价?led透明屏多少钱一个平方? WORD中钢筋符号打不出来,怎么处理 华为mate自动旋转屏幕怎么设置 如何在AIX中安装Oracle数据库 AIX+Oracle Clusterware/HA+RAC+ASM/GPFS/RAW 求助? aix 7.1 下支持安装oracle 10.2.0.4 rac吗 AIX平台中如果裸设备已经被创建好,可以直接创建表空间么 AIX下的oracle 裸设备加错了users表空间。。。要怎么撤下来? 请问AIX6如果安装oracle数据库,安装包是否可以通过U盘将安装文件传输... oracle11g R2安装RAC,ocr和voting disk还需要裸设备吗 AIX下搭建RAC的裸设备该怎么创建 在AIX 7.1上安装oracle 11g出现的问题 AIX5.3上成功安装oracle10G后,怎么知道创建了sid为orcl的实例没有... AIX下面装oracle的另一个数据库怎么弄(具体的)。 ...密码password 需要开放端口1521 用于安装oracle,请提供详细操作步骤... aix5.3 上安装了oracle10g,以rac的方式集群(共两个节点),怎重启数据... 如何判断AIX中有没有安装ORACLE 菜鸟求助 殇字的意思是什么 “殇”是什么意思?怎么读? “殇”是什么意思,怎么读,拼音怎么拼? 银行卡上的monthyear03/31是什么意思 &quot;殇&quot;的含义是什么?它是怎么来的? 殇,是什么意思?