`
cyhcheng
  • 浏览: 59994 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Sqlite入门

 
阅读更多

在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>
分享到:
评论

相关推荐

    SQLite入门与分析

    在SQLite入门与分析(七)---浅谈SQLite的虚拟机.doc中,主要讲解了SQLite如何通过虚拟机执行SQL语句。SQLite的虚拟机,也称为VDBE(Virtual Database Engine),是SQLite的核心组件。它负责解析SQL语句,将其转化为一...

    SQLite入门与分析.doc

    SQLite 是一个开源的嵌入式关系数据库管理系统,由 D. Richard Hipp 在 2000 年发布。它被设计成轻量级、高可移植性的解决方案,适用于那些需要简单数据库功能的应用程序,尤其是嵌入式环境。SQLite 的特点是零配置...

    SQLite入门.doc

    ### SQLite入门知识点详解 #### 一、SQLite简介 SQLite是一种轻量级的嵌入式数据库管理系统,最初由D. Richard Hipp在2000年发布。作为一种开源解决方案,SQLite的目标是减少应用程序在管理数据时所需的开销。它以...

    SQLite入门资料大全

    我自己寻找整理的SQLite资料,希望对大家有帮助。清单如下: Android 数据库技术 sqlite3-基础教程 sqlite3使用详解 sqlite命令行手册(中文) ...SQLite入门与分析 SQLite数据库文件格式全面分析

    嵌入式数据库SQLite入门与分析(1-9).

    ### 嵌入式数据库SQLite入门与分析 #### 一、SQLite简介 SQLite是一种轻量级的嵌入式关系型数据库管理系统,最初于2000年由D.Richard Hipp开发并发布。作为一种嵌入式数据库,SQLite与其他传统数据库管理系统(如...

    SQLite入门

    【SQLite入门】这篇文档主要针对初学者,详细介绍了SQLite数据库的下载、安装、编译以及在Visual Studio(VS)中的配置过程,同时给出了一个简单的测试代码。以下是详细的知识点: 1. **SQLite下载**: - SQLite是...

    SQLite 入门教程

    ### SQLite入门教程精要 #### 一、基本简介与特性 SQLite是一款自含式、无需服务器、无需配置的事务型关系数据库引擎。由于其体积小巧(仅几百KB),非常适合嵌入到应用程序中,无需额外的数据库服务器。这使得...

    SQLite入门语法

    还不错的sqlite入门语法,适合入门学习,对象操作 数据操作 事务处理 内置函数等

    SQLite入门与分析.pdf

    SQLite是一种开源的嵌入式关系数据库管理系统,其设计目的是为了简化软件应用程序中的数据管理任务。SQLite不依赖于外部的数据库服务器进程,而是直接嵌入到使用它的应用程序中,并与应用程序共享同一个进程空间。...

Global site tag (gtag.js) - Google Analytics