准备工作:
准备好Android studio和一个创建管理数据库的软件,推荐SQLite Expert Professional或者Navicat Premium。这里以SQLite Expert Professional为例。
创建外部数据库:
1.穿件sqlite数据库,按照自己的项目要求定义数据库和相应的数据表
导入数据库到Android studio项目中
1.在main目录下创建assets文件,将准备好的sqlite数据库文件放入这个目录下
解释:assets文件夹下的文件在应用被打包成apk时不会被压缩
2.在main目录下的java目录下的com.example.xxxx包内创建一个java类,用于管理数据库,如图所示的MyDatabaseHelper
3.在数据库的类中完成数据库的导入
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
public class MyDatabaseHelper {
//导入的sqlite数据库文件名
private final String DB_NAME = "questionCenter.db";
private SQLiteDatabase myDatabase;
private Context context;
//定义类的方法
public MyDatabaseHelper(Context context) {
this.context = context;
}
// 复制和加载区域数据库中的数据
public String CopyDBFile() throws IOException {
// 在第一次运行应用程序时,加载数据库到data/data/当前包的名称/database/数据库名字
//获取准确的路径,context.getPackageName()得到包名
File dir = new File("data/data/" + context.getPackageName() + "/databases");
//如果文件夹不存在,则创建指定的文件
if (!dir.exists() || !dir.isDirectory()) {
dir.mkdir();
}
//文件声明
File file = new File(dir, DB_NAME);
//输入流
InputStream inputStream = null;
//输出流
OutputStream outputStream = null;
//若不存在,通过IO流的方式,将assets目录下的数据库文件,写入到项目模拟手机中,当开启模拟
//器时,会将数据库文件写入到模拟手机的内存中
if (!file.exists()) {
try {
//创建文件
file.createNewFile();
//加载文件
inputStream = context.getClass().getClassLoader().getResourceAsStream("assets/" + DB_NAME);
//输出到文件
outputStream = new FileOutputStream(file);
byte[] buffer = new byte[1024];
int len;
//按字节写入
while ((len = inputStream.read(buffer)) != -1) {
outputStream.write(buffer, 0, len);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
//关闭资源
if (outputStream != null) {
outputStream.flush();
outputStream.close();
}
if (inputStream != null) {
inputStream.close();
}
}
}
return file.getPath();
}
}
4.打开自己安卓项目运行时的第一个Activity,在对应的oncreate()方法,使用数据库类中定义的数据库导入的方法,完成数据库的初始化操作
注意:不一定是在第一个Activity中,但必须是在项目使用数据库之前的那个Activity中导入数据库
//导入数据库到创建的文件中
MyDatabaseHelper myHelper = new MyDatabaseHelper(WelcomeActivity.this);
try {
myHelper.CopyDBFile();
} catch (IOException e) {
e.printStackTrace();
}
在如图位置:
5.在对应的Activity的oncreate()方法中使用如图的代码可打开数据库,进行crud操作,增删查改、获取数据库数据
获取数据库数据:(使用list集合)
1.在项目里面定义一个java类,用于定义数据表对应的列名。如用户表为例:
对应的用户类的代码如下:
public class UserDemo {
//对应userInfo数据库中的数据信息
public String username;
public String password;
public String savepsd;
public String autologin;
public String isregister;
public int lastscore;
}
2.按照自己的要求获取数据表的信息数据文章来源:https://www.toymoban.com/news/detail-473798.html
//获取数据库的用户数据
public List<UserDemo> getUsers(){
List<UserDemo> list=new ArrayList<UserDemo>();
//这是获取完整数据表信息的方法
Cursor cursor = myDatabase.query("userInfo.db",null,null,null,null,null,null);
//也可以使用Cursor对象的rawQuery方法,使用sql指定的数据
//Cursor cursor = myDatabase.rawQuery("select * from userInfo",null);
if(cursor.getCount()>0){
cursor.moveToFirst();//将cursor移动到第一个光标上
int count=cursor.getCount();
//将cursor中的每一条记录生成一个question对象,并将该question对象添加到list中
for(int i=0;i<count;i++){
cursor.moveToPosition(i);
UserDemo users =new UserDemo();
users.username=cursor.getString(cursor.getColumnIndex("username"));
users.lastscore=cursor.getInt(cursor.getColumnIndex("lastscoren"));
users.password=cursor.getString(cursor.getColumnIndex("password"));
users.autologin=cursor.getString(cursor.getColumnIndex("autologin"));
users.savepsd=cursor.getString(cursor.getColumnIndex("savepsd"));
users.isregister=cursor.getString(cursor.getColumnIndex("isregister"));
list.add(users);
}
// System.out.println(list.get(2)); //可输出list集合的数据
}
return list;
}
3.通过集合获取到数据后,可以按照自己的要求进行相应的功能实现文章来源地址https://www.toymoban.com/news/detail-473798.html
如果需要对导入的数据库进行操作,可参照外部sqlite数据库导入后对数据库进行操作https://blog.csdn.net/NXBBC/article/details/123734221?spm=1001.2014.3001.5502
到了这里,关于Android studio引入外部SQLite数据库,获取数据库列表数据的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!