android数据库的另一种写法

安卓微信本地数据库解密 安卓微信数据库解密 阅读详情

PersonDBOpenHelper.java

package com.demo.dbtest.dbHelper;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;


/**
 * 1.写一个类,继承SQLiteOpenHelper帮助创建数据库版本的控制
 * @author David
 *
 */
public class PersonDBOpenHelper extends SQLiteOpenHelper {

	private static final String TAG = "PersonDBOpenHelper";
	/**
	 * 数据库创建帮助类的构造方法
	 * @param context
	 */
	public PersonDBOpenHelper(Context context) {
		/**
		 * name 数据库文件的名称
		 * factory 访问数据库的一个数据库的游标工厂
		 * version 数据库的版本
		 */
		super(context,"person.db",null,2);
	}

	/**
	 * 当数据库第一次被创建的时候调用的方法
	 * 适合做数据库表结构的初始化
	 * 
	 * 注意:如果数据库已经存在,那么oncreate方法就不会再次被调用
	 * 也就是说,如果数据库创建了,该oncreate无法改变数据库的版本,
	 * 或者修改数据库的内容,如果想修改数据库的内容,请调用下面的
	 * onUpgrade方法
	 */
	@Override
	public void onCreate(SQLiteDatabase db) {
		db.execSQL("create table person(id integer primary key autoincrement,name varchar(20),phone varchar(20))");
		Log.i(TAG, "数据库被创建了...");

	}

	//当数据库的版本号增加的时候
	@Override
	public void onUpgrade(SQLiteDatabase db, int arg1, int arg2) {
		Log.i(TAG, "数据库的版本变化了...");
	}

}
PersonDao2.java

package com.demo.dbtest.dao;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;

import com.demo.dbtest.dbHelper.PersonDBOpenHelper;

public class PersonDao2 {
	//增删改查
	//javaweb 1.加载jdbc驱动,连接  2.准备sql 3.查询

	private PersonDBOpenHelper helper;

	//任何人是使用dao都要传递一个上下文
	public PersonDao2(Context context){
		helper = new PersonDBOpenHelper(context);
	}

	/**
	 * 添加一条记录
	 */
	public boolean add(String name,String phone){
		SQLiteDatabase db = helper.getWritableDatabase();
		//db.execSQL("insert into person(name,phone) values(?,?)", new Object[]{name,phone});
		ContentValues values = new ContentValues();//map集合
		values.put("name", name);
		values.put("phone", phone);
		long result = db.insert("person", null, values);
		db.close();
		if(result != -1){
			return true;
		}else{
			return false;
		}
	}

	/**
	 * 删除一条记录
	 */
	public boolean delete(int id){
		SQLiteDatabase db = helper.getWritableDatabase();
		//db.execSQL("delete from person where id = ?",new Object[]{id});
		int result = db.delete("person", "id=?", new String[]{id + ""});
		db.close();
		if(result > 0){
			return true;
		}else{
			return false;
		}
	}

	/**
	 * 更新记录
	 */
	public boolean update(String newphone,int id){
		SQLiteDatabase db = helper.getWritableDatabase();
		//db.execSQL("update person set phone =? where id=?",new Object[]{newphone,id});
		ContentValues values = new ContentValues();
		values.put("phone", newphone);
		int result = db.update("person", values, "id=?", new String[]{id + ""});
		db.close();
		if(result > 0){
			return true;
		}else{
			return false;
		}
	}

	/**
	 * 查询记录
	 * @return 当前记录的id,如果不存在,返回-1
	 */
	public int find(String name){
		int id = -1;
		SQLiteDatabase db = helper.getReadableDatabase();	//获取可读的数据库
		//Cursor cursor = db.rawQuery("select id from person where name=?", new String[]{name});
		Cursor cursor = db.query("person", new String[]{"id"}, "name=?", 
				new String[]{name}, null, null, null);
		if(cursor.moveToFirst()){	//移动到结果集的第一行,如果移动成功,证明查询成功了
			id = cursor.getInt(0);	//获得第一列的内容
		}
		cursor.close();
		db.close();
		return id;
	}

}

TestPersonDao.java

package com.demo.dbtest.test;

import com.demo.dbtest.dao.PersonDao2;

import android.test.AndroidTestCase;

public class TestPersonDao extends AndroidTestCase {
	private PersonDao2 dao;

	@Override
	protected void setUp() throws Exception {
		dao = new PersonDao2(getContext()); 	//测试框架,提供一个假的虚拟的上下文
		super.setUp();
	}
	
	public void testAdd() throws Exception{
		dao.add("lisi", "444444");
	}
	
	public void testDelete() throws Exception{
		int id = dao.find("zhangsan");
		dao.delete(id);
	}
	
	public void testUpdate() throws Exception{
		int id = dao.find("zhangsan");
		dao.update("99999", id);
	}
	
	public void testFind() throws Exception{
		dao.find("zhangsan");
	}
	
}


AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.demo.dbtest"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="17" />

    <instrumentation
        android:name="android.test.InstrumentationTestRunner"
        android:label="Tests for My App"
        android:targetPackage="com.demo.dbtest" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <uses-library android:name="android.test.runner" />

        <activity
            android:name="com.demo.dbtest.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>


Android数据库:SQLite除了.db文件,还多出.db-shm,.db-wal文件 Android数据库:SQLite除了.db文件,还多出.db-shm,.db-wal文件 使用安卓数据库保存文件时,在Android Studio 的 Device File Explorer里数据库文件目录 /data/data/com.urovo.datatopc/databases/DATA.db 发现其目录下不仅有.db文件,还有两个其他文件 .db-shm和.db-wal文件 而且数据库存储文件DATA.db(这是我的数据库名字,你们的可能不一样)保存至本地,通过SQLite Develope 阅读详情

相关推荐

Android Studio 使用插件Database Navigation 连接 sqlite数据库

Database Navigation 是一款在 Android Studio 开发环境中非常实用的插件,它主要致力于帮助开发者更便捷、高效地管理和操作数据库,尤其是在 Android 项目涉及到数据库相关开发工作时,能够提升开发体验与效率。

梁辰兴的博客 2556

android数据库原始写法

PersonDBOpenHelper.java package com.demo.introductiontothedb; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; /** *

幻想中的未来 911

关于unity安卓平台对数据库文件的读取

这是针对关于安卓平台对项目数据库文件的访问 刚来公司实习不久,开始了一个小项目demo,本来是用csv文件读取一些数据,然而老板开始要求用数据库来读取,因此我就简单的直接读取本机的数据库,在PC上运行没有问题。老板开始要求在安卓上运行,此时问题就出现了,安卓上是无法通过ip去访问数据库。其实可以通过访问网站来获取数据库的数据,但是对于我这种刚毕业的新手来说是无法实现的,只能妥协通过访问数据库导出来...

日尧的博客 2352

android 手把手教你写数据库框架(第一篇)

android 手把手教你写数据库框架(第一篇)

zhouguizhi 3567

Android动态破解微信本地数据库(EnMicroMsg.db)

最近在公司接了一个任务,需要在几百台手机上安装一个app,目的是获取微信里面的通讯录,并且定时的把他发送到我们的服务器上。当时依次尝试的如下几个方案:   1.通过群控,将好友截图发送到服务端(python),利用python的图像识别库来获取好友的信息。   2.开发一个app,使用android自带AccessibilityService,模拟用户操作微信,然后获取屏幕中的内容。

六桥风月IT随笔 9009

安卓db数据库查看工具——快速管理与分析SQLite数据库

SQLite 是 Android 内置的轻量级关系型数据库管理系统,为 Android 应用提供了一种高效、便捷的数据持久化方案。与传统的关系型数据库不同,SQLite 将数据库存储在文件系统中的单一文件内,从而简化了数据库的部署和管理。SQLite 支持标准的 SQL 语言,允许在没有服务器进程的情况下进行数据库操作,这使得它非常适合于资源有限的移动设备环境。在 Android 应用开发中,SQLite 数据库常用于本地数据存储、用户个性化设置记录以及应用内缓存。

weixin_32869687的博客 1943

赋值的另一种写法

Ever since I found out that a GCC C extension causes a code block to return a value if you enclose it in round brackets, I’ve been using it in my code. What do you think? self.bounds = ({ CGRect bou

呆萌院长 1114

BarTender破解版风险与低成本正版替代方案全解析

在工业自动化和企业信息化领域,标签打印与条形码技术是连接物理世界与数字系统的关键环节。其核心原理是通过软件驱动打印设备,将可变数据(如序列号、生产日期)与固定模板结合,生成可追溯的标识载体。这项技术的价值在于实现生产流程可视化、供应链管理精细化与质量控制自动化,广泛应用于仓储物流、制造执行、零售门店等场景。然而,软件授权合规性常成为企业成本控制的痛点,尤其面对BarTender这类行业标准工具时,部分用户可能寻求破解方案。但破解版软件通常采用内存补丁、伪造许可证等技术手段绕过验证,不仅存在法律风险,更会引发

weixin_32736961的博客 738

另外一种写法如下:

 // 非递归写法  int func(int n)  {      int count = 0;      while(n > 1)      {          if(n % 2 == 0)            // n % 4等于0或2              n >>= 1;          else if(n == 3)              n--

chuyue369的博客 776

GNSS差分码偏差(DCB)从原理到实战:如何避免数据处理中的常见错误

本文深入解析GNSS差分码偏差(DCB)的原理及其对高精度定位的关键影响。针对数据处理中因忽略DCB校正导致的常见错误,如单系统PPP高程偏差、多系统融合精度下降及电离层研究失真等,提供了实战解决方案与主流DCB产品获取、集成方法,帮助用户有效规避陷阱,提升数据处理精度。

k5l6m的博客 224

Langfuse实战:从评估打分到问题解决的完整指南

本文详细介绍了如何利用开源LLM工程平台Langfuse对AI应用进行系统性评估与优化。从创建评估数据集、设计自动化评分函数,到深入排查常见问题并关联Trace进行精准打分,提供了完整的实战指南。最后,探讨了如何利用评估结果驱动提示词迭代与A/B测试,并给出了生产环境部署与性能优化的关键考量,帮助开发者构建可测量、可分析、可改进的LLM应用。

backprop5master的博客 651

js 的另一种写法

防止方法名重复的一种写法:  var mytest = function() {        return {                test1:function () {                        alert("this is a test1 func");        }                test2: function () {          ...

mengguihua110的博客 394

北航机器学习期末考试试题2020年春

北航机器学习期末考试试题2020春 看csdn上试题收费,积分还挺高,本着共享的理念,把2020春季ML考试的试题公开,若侵权,立删 前8道题10分,第9题20分 决策树采用ID3算法 对宇宙星球是否适合生存分类 SVM的原理;软间隔、硬间隔;以及对非线性样本点分类 集成学习的原理,以及及串行boosting以及bagging的简单概括 K-means与混合高斯模型的异同以及EM算法的原理,如何计算 马尔可夫随机场最大团;马尔可夫随机场的联合概率分布(势函数表示),贝叶斯网络联合概率分布 PCA主成分基于

qq_43343919的博客 5417

android sqlite 参数,android sqlite 使用db.update多条件参数

(写在最初:如果还不明白db.update方法的四个参数的具体解释,请查看源码或baidu,文章不少)最初使用update是这样写的SQLiteDatabase db = DatabaseHelper.getWdb();String str_time = TimeUtils.getStrTime("" + b.getInput_content().getCreated(), "yyyy-MM-dd...

weixin_39683769的博客 912

2026星宸科技数字IC设计笔试带答案

摘要:本文包含四个计算机科学领域的编程与逻辑设计题目解析。第一部分通过C语言程序补充水仙花数判断代码,考查循环结构和函数设计;第二部分分析Verilog代码的D触发器电路,讨论时序约束与时钟频率影响;第三部分详细讲解静态时序分析中的建立/保持时间计算与违例判断;第四部分计算机体系结构题目涉及CPI、MIPS计算和性能加速比分析。最后还包含一个逻辑代数化简的示例,展示基本的布尔代数简化技巧。这些题目全面覆盖了编程基础、数字电路设计、时序分析和计算机性能评估等核心知识点。(149字)

Open 121

YOLOv8 改进:添加 LSK 注意力机制

通过添加 LSK 注意力机制,YOLOv8 能够更有效地捕捉特征图上的重要信息,提高检测性能,尤其是在复杂场景下展现出色的表现。这种方法不仅适用于资源受限的设备,还能在丰富多样的实际应用中提供强劲支持。

走向CTO的路上... 1221

查看安卓sqlite数据库工具:Android-Debug-Database

简要介绍 安卓开发过程中,有时需要查看sqlite数据库,核对数据.本文介绍Android-Debug-Database,非常好用. github地址:https://github.com/amitshekhariitbhu/Android-Debug-Database 功能: 支持查看手机该app的数据库和shared preference. 支持修改数据库和shared preferenc...

蓝不蓝编程 1524

[系统安全] 一.什么是逆向分析、逆向分析基础及经典扫雷游戏逆向

娜璋AI安全之家于2020年8月18日开通,将专注于Python和安全技术,主要分享Web渗透、系统安全、CVE复现、威胁情报分析、人工智能、大数据分析、恶意代码检测等文章。真心想把自己近十年的所学所做所感分享出来,与大家一起进步。 系统安全系列作者将深入研究恶意样本分析、逆向分析、攻防实战等,通过在线笔记和实践操作的形式分享与博友们学习,希望能与您一起进步。第一篇文章先带领大家学习什么是逆向分析,然后详细讲解逆向分析的典型应用,接着通过OllyDbg工具逆向分析经典的游戏扫雷,再通过Cheat Engin

杨秀璋的专栏 2万+

Android Studio | 使用Database Inspector 查看数据库 .db 文件,太方便了!

在涉及到数据库开发时,通常需要查看 SQLite 数据库文件(.db),以调试数据存储是否正确。然而,由于Android 设备的 数据隔离机制,普通应用无法直接访问目录下的数据库文件。除了将数据库文件导出然后利用三方工具操作外,Android Studio 本身也提供了 Database Inspector 工具,可以直接在 IDE 中可视化地查看和修改数据库内容,无需导出文件,非常方便!

小马快跑的博客 2144

AI时代的软件质量保证新方法论

3.2.1 质量保证的方法论 质量保证(Quality Assurance, QA)是一种系统化的方法,用于确保产品或服务符合预定的质量标准。在AI时代,软件质量保证的方法论需要适应不断变化的AI技术和应用场景。 3.2.1.1 质量管理体系的构建 首先,构建一个完善

AI天才研究院 1352

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

Android访问外部DB文件

注:本文代码参考了网上的例子,忘了什么地址了,所以无法提供说明,原作者看到勿怪,可以提醒我加上。   有时候自己导入DB文件进行操作,和访问本地数据库有点差异。 首先在res下建立一个文件夹raw,然后把DB文件导入进去 然后写一个方法获取SQLiteDatabase private static SQLiteDatabase database; public static final

氵白的专栏 1万+

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Android 数据库加密 android-database-sqlcipher 开源版本编译过程

build android-database-sqlcipher 介绍 android-database-sqlcipher 用于 Android SQLite 数据库的加密。 维护者提供了 收费 和 开源 两个版本。 sqlcipher开发维护者官网:https://www.zetetic.net/sqlcipher/ github开源项目地址:android-database-sqlciph...

103style 6621

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

android studio使用database navigator查看数据库

一  database navigator database navigator是android studio的一个插件,可以用来查看sqlite数据库,也可以查看MySQL等其他数据库。 二  安装插件 1、file -> setting 2、搜索并安装插件 3、安装完成后会提示重启android studio,重启后,右侧出现DB Browser,至此安装完成。

乌龟赛跑 4万+

Android 数据库db 文件解析

sqlite>.mode column 默认为list,设置为column,其他模式可通过.help查看mode相关内。sqlite>.database 查看数据库文件信息命令(注意命令前带字符’.')2、用终端切换到数据库的路径下,命令 cd /Users/xxxxxxx。3、输入 sqlcipher xxxxx.db ,按Enter键继续。

GeniusIOTboy的博客 1635

Android 使用外部db数据库文件

先简单说下步骤: 将格式为.db的数据库文件放到android项目assets目录中; 在程序必要的时候,将其“拷贝”(文件读取)到Android 程序默认的数据库存储目录中,一般路径为“/data/data/项目包名/databases/“; 自定义SQLiteOpenHelper类,创建一个名字跟步骤1中.db名称一样的数据库; 按照平常逻辑,增删改查数据库。下面做下详细讲解: 步骤1:如下图,

AlanBoon希望能够帮助到你! 1万+

Android进阶之路 - Android Debug Database 本地数据库调试工具

话说有段时间没有做本地缓存方面的需求了,索性近期正好接到了类似需求,最终采用了GreenDao数据库缓存数据,为方便查询数据库,故采用了一款 三方框架 - Android-Debug-Database ,提升了不少工作效率 ~

Android、前端、小程序、后端 2567
上一篇: 如何查看无法导出的android数据库文件?
下一篇: android数据库原始写法
Timesongs
博客等级 码龄14年 15粉丝 82原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值