Android中SQLiteDatabase的使用

2024-03-05 16:38

本文主要是介绍Android中SQLiteDatabase的使用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

链接http://aina-hk55hk.iteye.com/blog/698794
package com.Aina.Android;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.ContentValues;
import android.content.DialogInterface;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;

public class Test extends Activity {
/** Called when the activity is first created. */
private ListView lv = null;
private SQLiteDatabase mSQLiteDatabase = null;
private static final String DATABASE_NAME = "Test.db";
private static final String TABLE_NAME = "table_test";
private static final String COLUMN_ID = "_id";// INTEGER PRIMARY KEY
private static final String COLUMN_NAME = "name";// TEXT
private static final String COLUMN_AGE = "age";// INTEGER
private static final String CREATE_TABLE = "CREATE TABLE IF NOT EXISTS "
+ TABLE_NAME + " (" + COLUMN_ID + " INTEGER PRIMARY KEY,"
+ COLUMN_NAME + " TEXT," + COLUMN_AGE + " INTEGER)";

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
lv = (ListView) this.findViewById(R.id.ListView01);
try {
mSQLiteDatabase = this.openOrCreateDatabase(DATABASE_NAME,
Activity.MODE_PRIVATE, null);
} catch (Exception ex) {
this.ShowDialog("打开或者创建数据库异常:" + ex.getMessage());
}
try {
mSQLiteDatabase.execSQL(CREATE_TABLE);
} catch (Exception ex) {
this.ShowDialog("创建表异常:" + ex.getMessage());
}
// this.InsertData();
// this.InsertData2();
// this.AddData();
// this.UpdateData();
// this.UpdateData2();
// this.UpdateData3();
// this.DeleteData();
// this.DeleteData2();
// this.DeleteData3();
this.SelectData();
}

@Override
protected void onPause() {
super.onPause();
mSQLiteDatabase.close();// 关闭数据库
}

/**
* 插入数据-execSQL
*/
private void InsertData() {
try {
String str = "INSERT INTO " + TABLE_NAME + " (" + COLUMN_NAME + ","
+ COLUMN_AGE + ")VALUES('张三',30)";
mSQLiteDatabase.execSQL(str);
} catch (Exception ex) {
this.ShowDialog("插入数据异常:" + ex.getMessage());
}

}

/**
* 插入数据-execSQL
*/
private void InsertData2() {
try {
String str = "INSERT INTO " + TABLE_NAME + " (" + COLUMN_NAME + ","
+ COLUMN_AGE + ")VALUES(?,?)";
Object[] ob = new Object[] { "王五", 50 };
mSQLiteDatabase.execSQL(str, ob);
} catch (Exception ex) {
this.ShowDialog("插入数据异常:" + ex.getMessage());
}
}

/**
* 插入数据-insert() nullColumnHack,这个参数需要传入一个列名。SQL标准并不允许插入所有列均为空的一行数据,
* 所以当传入的initialValues值为空或者为0时
* ,用nullColumnHack参数指定的列会被插入值为NULL的数据,然后再将此行插入到表中。
*/
private void AddData() {
try {
ContentValues cv = new ContentValues();
cv.put(COLUMN_NAME, "李四");
cv.put(COLUMN_AGE, 40);
// long num = mSQLiteDatabase.insert(TABLE_NAME, COLUMN_NAME, cv);
long num = mSQLiteDatabase.insertOrThrow(TABLE_NAME, null, cv);
this.setTitle("num==" + num);
} catch (Exception ex) {
this.ShowDialog("插入数据异常:" + ex.getMessage());
}

}

/**
* 更新数据
*/
private void UpdateData() {
try {
String str = "UPDATE " + TABLE_NAME + " SET " + COLUMN_AGE
+ " = 25 WHERE _id=1";
mSQLiteDatabase.execSQL(str);
} catch (Exception ex) {
this.ShowDialog("更新数据异常:" + ex.getMessage());
}
}

/**
* 更新数据
*/
private void UpdateData2() {
try {
String str = "UPDATE " + TABLE_NAME + " SET " + COLUMN_AGE
+ " = ? WHERE _id=?";
Object[] Ob = new Object[] { 33, 2 };
mSQLiteDatabase.execSQL(str, Ob);
} catch (Exception ex) {
this.ShowDialog("更新数据异常:" + ex.getMessage());
}
}

/**
* 更新数据
*/
private void UpdateData3() {
try {
ContentValues cv = new ContentValues();
cv.put(COLUMN_NAME, "李四4");
cv.put(COLUMN_AGE, 43);
int num = mSQLiteDatabase.update(TABLE_NAME, cv,
COLUMN_NAME + "=?", new String[] { "李四" });
this.setTitle("修改行数num=" + num);
} catch (Exception ex) {
this.ShowDialog("更新数据异常:" + ex.getMessage());
}
}

/**
* 删除数据
*/
private void DeleteData() {
try {
String str = "DELETE FROM " + TABLE_NAME + " WHERE _id=3";
mSQLiteDatabase.execSQL(str);
} catch (Exception ex) {
this.ShowDialog("删除数据异常:" + ex.getMessage());
}
}

/**
* 删除数据
*/
private void DeleteData2() {
try {
String str = "DELETE FROM " + TABLE_NAME + " WHERE _id=?";
mSQLiteDatabase.execSQL(str, new Object[] { 2 });
} catch (Exception ex) {
this.ShowDialog("删除数据异常:" + ex.getMessage());
}
}

/**
* 删除数据
*/
private void DeleteData3() {
try {
int num = mSQLiteDatabase.delete(TABLE_NAME, "_id=1", null);
this.setTitle("删除行数num=" + num);
} catch (Exception ex) {
this.ShowDialog("删除数据异常:" + ex.getMessage());
}
}

/**
* 查询数据
*/
private void SelectData() {
try {
String sql = "SELECT * FROM " + TABLE_NAME;
Cursor cursor = mSQLiteDatabase.rawQuery(sql,null);
// Cursor cursor = mSQLiteDatabase.query(TABLE_NAME, new String[] {
// COLUMN_ID, COLUMN_NAME, COLUMN_AGE }, COLUMN_NAME + "=?",
// new String[] { "李四" }, null, null, null);
if (cursor != null) {
ListAdapter adapter = new SimpleCursorAdapter(this,
R.layout.ss, cursor, new String[] { COLUMN_ID,
COLUMN_NAME, COLUMN_AGE },
new int[] { R.id.TextView1, R.id.TextView2,
R.id.TextView3 });
lv.setAdapter(adapter);
}
} catch (Exception ex) {
this.ShowDialog("查询数据异常:" + ex.getMessage());
}
}
/**
* 删除表
*/
private void DropTable(){
try{
String sql = "DROP TABLE "+TABLE_NAME;
mSQLiteDatabase.execSQL(sql);
}catch(Exception ex){
this.ShowDialog("删除表异常:"+ex.getMessage());
}
}
/**
* 删除数据库
*/
private void DropDatabase(){
try{
this.deleteDatabase(DATABASE_NAME);
}catch(Exception ex){
this.ShowDialog("删除数据库异常:"+ex.getMessage());
}
}
/**
* 提示对话框
* @param msg
*/
private void ShowDialog(String msg) {
new AlertDialog.Builder(this).setTitle("提示").setMessage(msg)
.setPositiveButton("OK", new DialogInterface.OnClickListener() {

@Override
public void onClick(DialogInterface dialog, int which) {

}

}).show();
}
}
2.main.xml
Java代码
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView android:layout_width="fill_parent"
android:layout_height="wrap_content" android:text="@string/hello" />
<ListView android:id="@+id/ListView01" android:layout_width="fill_parent"
android:layout_height="wrap_content"></ListView>
</LinearLayout>

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView android:layout_width="fill_parent"
android:layout_height="wrap_content" android:text="@string/hello" />
<ListView android:id="@+id/ListView01" android:layout_width="fill_parent"
android:layout_height="wrap_content"></ListView>
</LinearLayout>


3.ss.xml
Java代码
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal" android:layout_width="fill_parent"
android:paddingTop="5dip" android:paddingBottom="5dip" android:paddingLeft="5dip"
android:layout_height="wrap_content">
<TextView android:id="@+id/TextView1" android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="" />
<TextView android:id="@+id/TextView2" android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="20px" android:layout_marginLeft="50dip" android:paddingRight="50dip"
android:text="" />
<TextView android:id="@+id/TextView3" android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="" />

这篇关于Android中SQLiteDatabase的使用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/777136

相关文章

Spring IoC 容器的使用详解(最新整理)

《SpringIoC容器的使用详解(最新整理)》文章介绍了Spring框架中的应用分层思想与IoC容器原理,通过分层解耦业务逻辑、数据访问等模块,IoC容器利用@Component注解管理Bean... 目录1. 应用分层2. IoC 的介绍3. IoC 容器的使用3.1. bean 的存储3.2. 方法注

Python内置函数之classmethod函数使用详解

《Python内置函数之classmethod函数使用详解》:本文主要介绍Python内置函数之classmethod函数使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录1. 类方法定义与基本语法2. 类方法 vs 实例方法 vs 静态方法3. 核心特性与用法(1编程客

Linux中压缩、网络传输与系统监控工具的使用完整指南

《Linux中压缩、网络传输与系统监控工具的使用完整指南》在Linux系统管理中,压缩与传输工具是数据备份和远程协作的桥梁,而系统监控工具则是保障服务器稳定运行的眼睛,下面小编就来和大家详细介绍一下它... 目录引言一、压缩与解压:数据存储与传输的优化核心1. zip/unzip:通用压缩格式的便捷操作2.

使用Python实现可恢复式多线程下载器

《使用Python实现可恢复式多线程下载器》在数字时代,大文件下载已成为日常操作,本文将手把手教你用Python打造专业级下载器,实现断点续传,多线程加速,速度限制等功能,感兴趣的小伙伴可以了解下... 目录一、智能续传:从崩溃边缘抢救进度二、多线程加速:榨干网络带宽三、速度控制:做网络的好邻居四、终端交互

Python中注释使用方法举例详解

《Python中注释使用方法举例详解》在Python编程语言中注释是必不可少的一部分,它有助于提高代码的可读性和维护性,:本文主要介绍Python中注释使用方法的相关资料,需要的朋友可以参考下... 目录一、前言二、什么是注释?示例:三、单行注释语法:以 China编程# 开头,后面的内容为注释内容示例:示例:四

Go语言数据库编程GORM 的基本使用详解

《Go语言数据库编程GORM的基本使用详解》GORM是Go语言流行的ORM框架,封装database/sql,支持自动迁移、关联、事务等,提供CRUD、条件查询、钩子函数、日志等功能,简化数据库操作... 目录一、安装与初始化1. 安装 GORM 及数据库驱动2. 建立数据库连接二、定义模型结构体三、自动迁

ModelMapper基本使用和常见场景示例详解

《ModelMapper基本使用和常见场景示例详解》ModelMapper是Java对象映射库,支持自动映射、自定义规则、集合转换及高级配置(如匹配策略、转换器),可集成SpringBoot,减少样板... 目录1. 添加依赖2. 基本用法示例:简单对象映射3. 自定义映射规则4. 集合映射5. 高级配置匹

Spring 框架之Springfox使用详解

《Spring框架之Springfox使用详解》Springfox是Spring框架的API文档工具,集成Swagger规范,自动生成文档并支持多语言/版本,模块化设计便于扩展,但存在版本兼容性、性... 目录核心功能工作原理模块化设计使用示例注意事项优缺点优点缺点总结适用场景建议总结Springfox 是

嵌入式数据库SQLite 3配置使用讲解

《嵌入式数据库SQLite3配置使用讲解》本文强调嵌入式项目中SQLite3数据库的重要性,因其零配置、轻量级、跨平台及事务处理特性,可保障数据溯源与责任明确,详细讲解安装配置、基础语法及SQLit... 目录0、惨痛教训1、SQLite3环境配置(1)、下载安装SQLite库(2)、解压下载的文件(3)、

使用Python绘制3D堆叠条形图全解析

《使用Python绘制3D堆叠条形图全解析》在数据可视化的工具箱里,3D图表总能带来眼前一亮的效果,本文就来和大家聊聊如何使用Python实现绘制3D堆叠条形图,感兴趣的小伙伴可以了解下... 目录为什么选择 3D 堆叠条形图代码实现:从数据到 3D 世界的搭建核心代码逐行解析细节优化应用场景:3D 堆叠图