- 浏览: 59994 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
cyhcheng:
http://android-sdk-addons.motod ...
android 更新列表 -
cyhcheng:
递归删除.svn文件夹find -name '.svn' |x ...
在ubuntu下安装subversion -
cyhcheng:
http://cssdeck.com/labs/html5-d ...
varnish -
cyhcheng:
http://demo.geo-solutions.it/sh ...
install,create and usetemplate database -
cyhcheng:
入门学习站点:http://ian01.geog.psu.ed ...
install,create and usetemplate database
在Android下,对Sqlite3进行了封装,使用相对更简单了。下面的代码主要实现了数据库的安装、升级、添加、查询等功能,至于修改、删除也非常容易实现。并实现了对长时间按键的处理。
MainActivity.java的代码:
package org.penguin.study.android.sqlite3; import android.app.Activity; import android.app.AlertDialog; import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; import android.os.Bundle; import android.util.Log; import android.view.ContextMenu; import android.view.View; import android.view.ContextMenu.ContextMenuInfo; import android.view.View.OnCreateContextMenuListener; import android.widget.TextView; public class MainActivity extends Activity { private static final String DATABASE_NAME = "simple.db"; private static final int DATABASE_VERSIOIN = 1; private static final String tag = "org.penguin.study.android.sqlite3.MainActivity"; private static final String createTableOfPerson = "CREATE TABLE IF NOT EXISTS person (personId INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL , personName VARCHAR(20) UNIQUE , sex BOOL DEFAULT 1, birthday DATETIME, createdDate DATETIME DEFAULT CURRENT_TIMESTAMP, description TEXT)"; private static final String dropTableOfPerson = "DROP TABLE IF EXISTS person"; private static final String insertDataOfPerson = "INSERT INTO person (personName,sex,birthday,description) VALUES('赵静',0,'1978-11-22','一个惊艳的服装设计师')"; private final DatabaseHelper dbHelper = new DatabaseHelper(this); private static final String tableNameOfPerson = "person"; private static final String[] columnNamesOfPerson = { "personId", "personName", "sex", "birthday", "createdDate", "description" }; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); TextView messageTV = (TextView) findViewById(R.id.messageTV); SQLiteDatabase db = dbHelper.getReadableDatabase(); Cursor cursor = db.query(tableNameOfPerson, columnNamesOfPerson, null, null, null, null, null); //较复杂的数据库查询方式 cursor = db.rawQuery("SELECT * FROM person WHERE personId=? or personId=?", new String[] { "1","2" }); //个人推荐使用这种方式查询数据 StringBuilder dbData = new StringBuilder(); cursor.moveToFirst(); while (!cursor.isAfterLast()) { dbData.append("编码:").append(cursor.getInt(0)).append("、姓名:").append(cursor.getString(1)).append("、性别:").append(cursor.getInt(2) == 1 ? "男" : "女") .append("、生日:").append(cursor.getString(3)).append("、简介:").append(cursor.getString(5)).append("\r\n"); cursor.moveToNext(); } messageTV.setText(dbData.toString()); messageTV.setOnCreateContextMenuListener(new OnCreateContextMenuListener() { @Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { new AlertDialog.Builder(MainActivity.this).setTitle("长按键事件处理").setMessage("确认清空数据吗?").show(); } }); } private static class DatabaseHelper extends SQLiteOpenHelper { public DatabaseHelper(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSIOIN); } @Override public void onCreate(SQLiteDatabase db) { db.execSQL(createTableOfPerson); db.execSQL(insertDataOfPerson); ContentValues values=new ContentValues();//键为String,值为8种基本数据类+String类型 values.put("personName", "程英华"); values.put("sex", 1); values.put("birthday", "1978-02-04"); values.put("description", "一个合格的程序员"); db.insert("person", null, values); Log.i(tag, "成功创建数据库,并初始化数据!"); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { db.execSQL(dropTableOfPerson); db.execSQL(createTableOfPerson); db.execSQL(insertDataOfPerson); Log.i(tag, "成功升级数据库,并初始化数据!"); } } }
布局文件:
<?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" android:id="@+id/messageTV" /> </LinearLayout>
发表评论
-
实现不选择选项则不可以关闭的对话框之方法三
2013-12-25 00:05 637本方法基于Dialog,使用自定义布局,更能满足发杂的需求。 ... -
实现不选择选项则不可以关闭的对话框之方法二
2013-12-24 23:28 764本方法在打开对话框后,如果没有选中项则禁用Positive ... -
实现不选择选项则不可以关闭的对话框之方法一
2013-12-24 23:23 575本方法中,当点击Positive Button时,如果没有选 ... -
Android开发环境搭建
2013-12-17 22:57 652由于本人现在使用mac了,所以特别记录下mac下的几条命令: ... -
关于空指针异常的处理
2013-10-14 10:27 659在Android中使用Log时的处理: I ... -
NDK入门
2013-07-15 16:51 464下载Android SDK、NDK,配置环境变量 新建 ... -
Android 中DatePickerDialog和TimePickerDialog使用旧版的样式
2013-07-11 15:27 2370想在Android3.*+项目中使用Android2.*版 ... -
调用google cloud print
2013-07-04 16:15 1408判断本地是否安装某个应用,如果没有安装,则打开google ... -
调用google translate
2013-07-04 15:21 991Intent i = new Intent(); i.set ... -
读取Tag数据
2013-04-28 15:33 1138import java.io.UnsupportedEnco ... -
向Tag写入数据
2013-04-28 15:24 1601授权: <uses-permission ... -
ubuntu下安装android开发环境
2012-04-11 10:54 847sudo umount /media/cdrom sudo ... -
android 更新列表
2012-04-11 09:18 1021https://dl-ssl.google.com/andro ... -
Android常见问题及其解决办法
2012-02-15 13:44 3596今天在向模拟器部署运行项目时碰到下面的异常: [201 ... -
Layout动画入门
2012-02-09 12:02 1364针对Layout或者ViewGroup对象,可以方便的通过xm ... -
逐帧动画入门
2012-02-09 10:58 1116简单来讲,逐帧动画就 ... -
Menu及其自定义皮肤的处理
2011-09-23 09:52 1351SimpleMenuActivity.java代码: ... -
Notification入门
2011-06-10 19:03 1337题外话:在Android中服务必须在Actvi ... -
CheckBox与ListView的结合方法一
2011-06-03 14:19 1975最近这段时间比较闲,每天都无所事事。不再想重复这样的生 ...
相关推荐
在SQLite入门与分析(七)---浅谈SQLite的虚拟机.doc中,主要讲解了SQLite如何通过虚拟机执行SQL语句。SQLite的虚拟机,也称为VDBE(Virtual Database Engine),是SQLite的核心组件。它负责解析SQL语句,将其转化为一...
SQLite 是一个开源的嵌入式关系数据库管理系统,由 D. Richard Hipp 在 2000 年发布。它被设计成轻量级、高可移植性的解决方案,适用于那些需要简单数据库功能的应用程序,尤其是嵌入式环境。SQLite 的特点是零配置...
### SQLite入门知识点详解 #### 一、SQLite简介 SQLite是一种轻量级的嵌入式数据库管理系统,最初由D. Richard Hipp在2000年发布。作为一种开源解决方案,SQLite的目标是减少应用程序在管理数据时所需的开销。它以...
我自己寻找整理的SQLite资料,希望对大家有帮助。清单如下: Android 数据库技术 sqlite3-基础教程 sqlite3使用详解 sqlite命令行手册(中文) ...SQLite入门与分析 SQLite数据库文件格式全面分析
### 嵌入式数据库SQLite入门与分析 #### 一、SQLite简介 SQLite是一种轻量级的嵌入式关系型数据库管理系统,最初于2000年由D.Richard Hipp开发并发布。作为一种嵌入式数据库,SQLite与其他传统数据库管理系统(如...
【SQLite入门】这篇文档主要针对初学者,详细介绍了SQLite数据库的下载、安装、编译以及在Visual Studio(VS)中的配置过程,同时给出了一个简单的测试代码。以下是详细的知识点: 1. **SQLite下载**: - SQLite是...
### SQLite入门教程精要 #### 一、基本简介与特性 SQLite是一款自含式、无需服务器、无需配置的事务型关系数据库引擎。由于其体积小巧(仅几百KB),非常适合嵌入到应用程序中,无需额外的数据库服务器。这使得...
还不错的sqlite入门语法,适合入门学习,对象操作 数据操作 事务处理 内置函数等
SQLite是一种开源的嵌入式关系数据库管理系统,其设计目的是为了简化软件应用程序中的数据管理任务。SQLite不依赖于外部的数据库服务器进程,而是直接嵌入到使用它的应用程序中,并与应用程序共享同一个进程空间。...