安卓基礎(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.pswp.cn/diannao/79080.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/79080.shtml
英文地址,請注明出處:http://en.pswp.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) {