安卓基础(SQLite)

基础

import sqlite3# 连接到数据库
conn = sqlite3.connect('mydatabase.db')
cursor = conn.cursor()# 执行查询
cursor.execute("SELECT * FROM users")
rows = cursor.fetchall()for row in rows:print(row)# 关闭连接
conn.close()

创建一个继承自 SQLiteOpenHelper 的类,这个类用于管理数据库的创建和版本更新

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;public class MyDatabaseHelper extends SQLiteOpenHelper {// 定义数据库名private static final String DATABASE_NAME = "my_database.db";// 定义数据库版本private static final int DATABASE_VERSION = 1;// 定义要创建的表名public static final String TABLE_NAME = "my_table";// 定义表中的 id 列名public static final String COLUMN_ID = "id";// 定义表中的 name 列名public static final String COLUMN_NAME = "name";// 创建表的 SQL 语句private static final String CREATE_TABLE = "CREATE TABLE " + TABLE_NAME + " (" +COLUMN_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +COLUMN_NAME + " TEXT NOT NULL);";// 构造函数,接收上下文对象public MyDatabaseHelper(Context context) {super(context, DATABASE_NAME, null, DATABASE_VERSION);}// 当数据库首次创建时调用,用于创建表@Overridepublic void onCreate(SQLiteDatabase db) {db.execSQL(CREATE_TABLE);}// 当数据库版本更新时调用,可用于升级表结构@Overridepublic void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {// 删除旧表db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);// 重新创建表onCreate(db);}
}    

查询数据

import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;public class MainActivity extends AppCompatActivity {private MyDatabaseHelper dbHelper;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView{"name":"GodelPlugin","parameters":{"input":"\"setContentView(R.layout.activity_main);\""}}<|FunctionExecuteEnd|><|FunctionExecuteResult|>setContentView(R.layout.activity_main);<|FunctionExecuteResultEnd|>// 创建数据库帮助类的实例dbHelper = new MyDatabaseHelper(this);// 插入一些示例数据insertData("Alice");insertData("Bob");// 查询数据queryData();}// 插入数据的方法private void insertData(String name) {// 获取可写的数据库实例SQLiteDatabase db = dbHelper.getWritableDatabase();// 插入数据的 SQL 语句String insertQuery = "INSERT INTO " + MyDatabaseHelper.TABLE_NAME + " (" + MyDatabaseHelper.COLUMN_NAME + ") VALUES ('" + name + "');";// 执行插入操作db.execSQL(insertQuery);// 关闭数据库db.close();}// 查询数据的方法private void queryData() {// 获取可读的数据库实例SQLiteDatabase db = dbHelper.getReadableDatabase();// 查询语句,这里查询表中的所有数据String selectQuery = "SELECT * FROM " + MyDatabaseHelper.TABLE_NAME;// 执行查询操作,返回一个 Cursor 对象Cursor cursor = db.rawQuery(selectQuery, null);if (cursor.moveToFirst()) {do {// 获取 id 列的值int id = cursor.getInt(cursor.getColumnIndex(MyDatabaseHelper.COLUMN_ID));// 获取 name 列的值String name = cursor.getString(cursor.getColumnIndex(MyDatabaseHelper.COLUMN_NAME));// 显示查询结果Toast.makeText(this, "ID: " + id + ", Name: " + name, Toast.LENGTH_SHORT).show();} while (cursor.moveToNext());}// 关闭游标cursor.close();// 关闭数据库db.close();}
}    

搜索在sqlite查出数据

xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"android:padding="16dp"><EditTextandroid:id="@+id/search_edit_text"android:layout_width="match_parent"android:layout_height="wrap_content"android:hint="输入搜索关键词" /><Buttonandroid:id="@+id/search_button"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="搜索" /><TextViewandroid:id="@+id/result_text_view"android:layout_width="match_parent"android:layout_height="wrap_content"android:paddingTop="16dp" />
</LinearLayout>    

java

import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;public class MainActivity extends AppCompatActivity {private MyDatabaseHelper dbHelper;private EditText searchEditText;private TextView resultTextView;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView{"name":"GodelPlugin","parameters":{"input":"\"setContentView(R.layout.activity_main);\""}}<|FunctionExecuteEnd|><|FunctionExecuteResult|>setContentView(R.layout.activity_main);<|FunctionExecuteResultEnd|>// 创建数据库帮助类的实例dbHelper = new MyDatabaseHelper(this);// 初始化输入框、按钮和结果显示文本视图searchEditText = findViewById(R.id.search_edit_text);Button searchButton = findViewById(R.id.search_button);resultTextView = findViewById(R.id.result_text_view);// 设置按钮点击事件监听器searchButton.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {// 获取输入框中的关键词String keyword = searchEditText.getText().toString();// 执行搜索操作searchData(keyword);}});// 插入一些示例数据insertData("Alice");insertData("Bob");}// 插入数据的方法private void insertData(String name) {// 获取可写的数据库实例SQLiteDatabase db = dbHelper.getWritableDatabase();// 插入数据的 SQL 语句String insertQuery = "INSERT INTO " + MyDatabaseHelper.TABLE_NAME + " (" + MyDatabaseHelper.COLUMN_NAME + ") VALUES ('" + name + "');";// 执行插入操作db.execSQL(insertQuery);// 关闭数据库db.close();}// 搜索数据的方法private void searchData(String keyword) {// 获取可读的数据库实例SQLiteDatabase db = dbHelper.getReadableDatabase();// 搜索语句,根据关键词搜索 name 列String selectQuery = "SELECT * FROM " + MyDatabaseHelper.TABLE_NAME + " WHERE " + MyDatabaseHelper.COLUMN_NAME + " LIKE '%" + keyword + "%'";// 执行搜索操作,返回一个 Cursor 对象Cursor cursor = db.rawQuery(selectQuery, null);StringBuilder result = new StringBuilder();if (cursor.moveToFirst()) {do {// 获取 id 列的值int id = cursor.getInt(cursor.getColumnIndex(MyDatabaseHelper.COLUMN_ID));// 获取 name 列的值String name = cursor.getString(cursor.getColumnIndex(MyDatabaseHelper.COLUMN_NAME));// 将结果添加到 StringBuilder 中result.append("ID: ").append(id).append(", Name: ").append(name).append("\n");} while (cursor.moveToNext());}// 关闭游标cursor.close();// 关闭数据库db.close();// 将搜索结果显示在文本视图中if (result.length() > 0) {resultTextView.setText(result.toString());} else {resultTextView.setText("未找到相关结果");}}
}    

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/79080.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

QuickAPI 核心能力解析:构建数据服务化的三位一体生态

在企业数据资产化运营的进程中&#xff0c;如何打破数据开发与共享的效率瓶颈&#xff0c;实现从 “数据可用” 到 “数据好用” 的跨越&#xff1f;麦聪软件的 QuickAPI 给出了系统性答案。作为 SQL2API 理念的标杆产品&#xff0c;QuickAPI 通过SQL 编辑器、数据 API、数据市…

《计算机视觉度量:从特征描述到深度学习》—生成式人工智能在工业检测的应用

2022 年 11 月 30 日一个很重要的标志事件就是chatgpt的出现&#xff0c;打开了生成式人工智能的开端。这也许会是一个历史性的时刻&#xff0c;今天是2025年4月&#xff0c;过去两年多&#xff0c;那个时刻目前回想还是对本人造成了冲击&#xff0c;一个完全有自主分析能力的生…

【软件测试】自动化测试框架Pytest + Selenium的使用

Pytest Selenium 是一种常见的自动化测试框架组合&#xff0c;用于编写和执行 Web 应用程序的自动化测试。Pytest 是一个强大的 Python 测试框架&#xff0c;而 Selenium 是一个用于浏览器自动化的工具&#xff0c;二者结合使用可以高效地进行 Web 应用的功能测试、UI 测试等。…

煤矿湿喷砂浆搅拌机组创新设计与关键技术研究

引言&#xff1a;湿喷工艺在煤矿支护中的革命性意义 在深部煤矿巷道支护领域&#xff0c;湿喷混凝土技术以其回弹率低&#xff08;<15%&#xff09;、粉尘浓度小&#xff08;<10mg/m&#xff09;的显著优势&#xff0c;逐步取代传统干喷工艺。作为湿喷工艺的核心设备&am…

如何处理ONLYOFFICE文档服务器与Java Web应用间的安全认证和授权

如何处理ONLYOFFICE文档服务器与Java Web应用间的安全认证和授权&#xff1f; 处理 ONLYOFFICE 文档服务器与 Java Web 应用之间的安全认证和授权&#xff0c;通常涉及以下几个关键步骤和技术&#xff1a; 1. JWT (JSON Web Token) 认证 启用 JWT&#xff1a; ONLYOFFICE 文档…

无参数RCE

无参数RCE&#xff08;Remote Code Execution&#xff0c;远程代码执行&#xff09; 是一种通过利用目标系统中的漏洞&#xff0c;在不直接传递用户可控参数的情况下&#xff0c;实现远程执行任意代码的攻击技术。与传统的RCE攻击不同&#xff0c;无参数RCE不依赖外部输入参数…

OL9设置oracle23ai数据库开机自启动

1、设置oracle用户的环境变量信息 [oracleOracleLinuxR9U5 ~]$vim ~/.bash_profile # Set Oracle environment variables for Oracle 23c AI export ORACLE_HOME/opt/oracle/product/23ai/dbhomeFree export ORACLE_SIDFREE export PATH$ORACLE_HOME/bin:$PATH export LD_LIB…

AI agents系列之智能体框架介绍

1. 引言 智能体AI Agents框架通过赋予自主系统动态感知、推理和行动的能力&#xff0c;彻底改变了AI领域。本节将探讨智能体框架的核心概念&#xff0c;并重点介绍为什么开源解决方案对现代AI开发的创新和可扩展性至关重要。 1.1 什么是智能体框架&#xff1f; 智能体框架代…

【数据资产入表】数据确权

&#xfeff;#数据要素[话题]#&#xfeff; &#xfeff;#数据资源盘点[话题]#&#xfeff; &#xfeff;#数据资产盘点[话题]#&#xfeff; &#xfeff;#数据资产[话题]#&#xfeff; &#xfeff;#数据资产入表[话题]#&#xfeff; &#xfeff;#数据盘点[话题]#&…

关于vxe-select得filter-method 自定义方法得使用,忽略大小写匹配

vxe-select使用模糊匹配时&#xff0c;filter-method自定义匹配方法&#xff0c;模糊忽略大小写进行匹配数据 <vxe-select v-model"marketingId":options"marketingOptions"transfer clearable placeholder"市场"filterable :filter-method&…

AIDL 中如何传递 Parcelable 对象

目录 1. 直接在 AIDL 中定义 Parcelable 对象2. 自定义 Parcelable 对象的传递3. 以 Rect 类为例的 Parcelable 实现4. 注意安全性5. 小结1. 直接在 AIDL 中定义 Parcelable 对象 背景说明 从 Android 10(API 级别 29)开始,AIDL 允许直接在 .aidl 文件中定义 Parcelable 对…

【LangChain核心组件】Retrieval(检索)模块

在AI技术日新月异的今天&#xff0c;大型语言模型&#xff08;LLM&#xff09;的局限性也逐渐显现——它们无法有效处理特定领域知识和用户私有数据。这正是检索增强生成&#xff08;Retrieval-Augmented Generation&#xff0c;RAG&#xff09;技术崛起的根本原因。作为当前最…

Java使用WebSocket视频拆帧进度处理与拆帧图片推送,结合Apipost进行调试

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</artifactId></dependency>Configuration public class WebSocketConfig {/*** 启动 WebSocket 服务器*/Beanpublic ServerEndpointE…

XSS攻击(反射型、存储型、dom型、PDF、SWF、SVG)

一、XSS攻击是什么 XSS是恶意攻击者往 Web 页面里插入恶意可执行网页脚本代码&#xff0c;当用户浏览该页之时&#xff0c;嵌入其中 Web 里面的脚本代码会被执行&#xff0c;从而可以达到攻击者盗取用户信息或其他侵犯用户安全隐私的目的。 二、XSS分类 反射型XSS 常见情况是…

vue + element-plus自定义表单验证(修改密码业务)

写一个vue组件Password.vue 没有表单验证只有3个表单项 <template><div><el-form><el-form-item label"旧密码"><el-input></el-input></el-form-item><el-form-item label"新密码"><el-input>&l…

Linux下使用MTK的SP_Flash_tool刷机工具

MTK的SP_Flash_tool刷机工具安装流程如下&#xff1a; 1、解压SP_Flash_Tool_Linux_v5.1336.00.100_Customer.zip unzip SP_Flash_Tool_exe_Linux_64Bit_v5.1520.00.100.zip 2、首先安装 libusb-dev 这个包&#xff1a; sudo apt-get install libusb-dev 3、安装成功之后…

基于 PyGetWindow 获取窗口信息和控制窗口

PyGetWindow 是基于Python的一款简单、跨平台的模块&#xff0c;用来获取窗口信息和控制窗口。可以实现的功能有&#xff1a; 获取当前系统中所有打开窗口的列表。 根据窗口标题、窗口句柄等属性获取特定的窗口对象。 激活、最小化、最大化和关闭窗口。 获取和设置窗口的位置、…

STM32硬件IIC+DMA驱动OLED显示——释放CPU资源,提升实时性

目录 前言 一、软件IIC与硬件IIC 1、软件IIC 2、硬件IIC 二、STM32CubeMX配置KEIL配置 三、OLED驱动示例 1、0.96寸OLED 2、OLED驱动程序 3、运用示例 4、效果展示 总结 前言 0.96寸OLED屏是一个很常见的显示模块&#xff0c;其驱动方式在用采IIC通讯时&#xff0c;常用软件IIC…

【ozone工具使用指南】基于keil使用ozone创建一个调试工程

前言&#xff1a;一般调试嵌入式工程代码最常见的方式是基于keil上面DEBUG&#xff0c;使用这种最古老的方式虽然也很方便&#xff0c;但是一些功能并没有办法体现&#xff0c;比如变量的变化曲线或者波形并无法直观的显示出来&#xff0c;ozone这个工具就结合了上面提到的比ke…

【ROS2】行为树 BehaviorTree(五):详细学习端口和黑板

1、构造函数 之前使用的行为树创建节点时,默认的构造函数形如: CalculateGoal(const std::string& name, const NodeConfig& config):SyncActionNode(name,config) {