android数据库 Android自带数据库SQLite 操作 一步一步 图示教程

开发过程中使用Android自带的数据库,不仅安全性较好,而且数据存取的效果也较好。

附源代码

http://download.csdn.net/detail/wyx100/8670843

开发规划

主界面

完成数据的输入,触发保存

启动后界面

输入数据

数据显示界面

数据库读取数据后显示

删除记录

开发顺序

主界面

类代码

package com.example.sqlitetest;

import android.os.Bundle;
import android.app.Activity;
import android.content.ContentValues;
import android.content.Intent;

import android.view.View;
import android.widget.Button;
import android.widget.EditText;

public class ActivityMain_1 extends Activity {
	//声明EditText实例
	private EditText et1,et2,et3;
	//声明Button实例
	private Button button;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main_1);

		//根据ID获得实例对象
		et1 = (EditText) findViewById(R.id.EditText01);
		et2 = (EditText) findViewById(R.id.EditText02);
		et3 = (EditText) findViewById(R.id.EditText03);
		button = (Button) findViewById(R.id.button);

		//事件
		button.setOnClickListener(new View.OnClickListener() {

			@Override
			public void onClick(View v) {
				String name=et1.getText().toString();
				String url =et2.getText().toString();
				String desc = et3.getText().toString();

				ContentValues values = new ContentValues();

				values.put("name", name);
				values.put("url", url);
				values.put("desc", desc);

				//实例化数据库帮助类
				DBHelper helper = new DBHelper(getApplicationContext());
				//打开数据库
				helper.open(); 

				//插入数据
				helper.insert(values);
				//实例化Intent
				Intent intent = new Intent(ActivityMain_1.this,QueryActivity.class);
				startActivity(intent);
				helper.close();
			}
		});

	}

}

界面布局

<?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:id="@+id/TextView01"
		android:layout_width="fill_parent"
		android:layout_height="wrap_content"
		android:text="网站名称"
	/>
	<EditText
		android:id="@+id/EditText01"
		android:layout_width="fill_parent"
		android:layout_height="wrap_content"

	/>
	<TextView
		android:id="@+id/TextView02"
		android:layout_width="fill_parent"
		android:layout_height="wrap_content"
		android:text="URL"
	/>
	<EditText
		android:id="@+id/EditText02"
		android:layout_width="fill_parent"
		android:layout_height="wrap_content"
	/>
	<TextView
		android:id="@+id/TextView03"
		android:layout_width="fill_parent"
		android:layout_height="wrap_content"
		android:text="网站描述"
	/>
	<EditText
		android:id="@+id/EditText03"
		android:layout_width="fill_parent"
		android:layout_height="wrap_content"
		android:height="100px"
	/>

	<Button
		android:id="@+id/button"
		android:layout_width="wrap_content"
		android:layout_height="wrap_content"
		android:text="添加"
	/>
</LinearLayout>

2.数据显示界面

类代码

package com.example.sqlitetest;

import android.app.AlertDialog;
import android.app.ListActivity;
import android.content.DialogInterface;
import android.database.Cursor;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;

public class QueryActivity extends ListActivity {

	private ListView listView;
	private Cursor c;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		//setContentView(R.layout.row);

		//实例化数据库帮助类
		final DBHelper help = new DBHelper(this);
		help.open();
		c= help.query();
		 query();
		//提示对话框
		final AlertDialog.Builder builder = new AlertDialog.Builder(this);
		listView.setOnItemClickListener(new OnItemClickListener(){
			@Override
			public void onItemClick(AdapterView<?> parent, View view,int position, long id) {
				final long temp = id;
				builder.setMessage("真的要删除该条记录吗?").setPositiveButton("是", new DialogInterface.OnClickListener() {

					@Override
					public void onClick(DialogInterface dialog, int which) {
						System.out.println("yes");
						help.del((int)temp);
						//重新查询
						//query();
						Cursor c = help.query();
						//列表项数组
						String[] from ={"_id","name","url","desc"};
						//列表项ID
						int[] to ={R.id.text0,R.id.text1,R.id.text2,R.id.text3};
						//适配器
						SimpleCursorAdapter adapter = new SimpleCursorAdapter(getApplicationContext(),R.layout.row,c,from,to);
						ListView listView = getListView();
						listView.setAdapter(adapter);

					}
				}).setNegativeButton("否", new DialogInterface.OnClickListener() {

					@Override
					public void onClick(DialogInterface dialog, int which) {
						// TODO Auto-generated method stub

					}
				});
				builder.create();
				builder.show();
			}
		});

	}
	@Override
	protected void onStop() {
		// TODO Auto-generated method stub
		super.onStop();

	}
	public void query(){
		//列表项数组
		String[] from ={"_id","name","url","desc"};
		//列表项ID
		int[] to ={R.id.text0,R.id.text1,R.id.text2,R.id.text3};

		//适配器
		SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,R.layout.row,c,from,to);
		//adapter.notifyDataSetChanged();
		//列表视图
		 listView = getListView();
		//为列表视图添加适配器
		listView.setAdapter(adapter);

	}

}

界面布局

<?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:layout_height="fill_parent"
	android:layout_gravity="center_vertical"
	>

	<TextView
		android:id="@+id/text0"
		android:layout_width="wrap_content"
		android:layout_height="wrap_content"
		android:paddingRight="10px"
	/>
	<TextView
		android:id="@+id/text1"
		android:layout_width="wrap_content"
		android:layout_height="wrap_content"
		android:paddingRight="10px"
	/>
	<TextView
		android:id="@+id/text2"
		android:layout_width="wrap_content"
		android:layout_height="wrap_content"
		android:paddingRight="10px"
	/>
	<TextView
		android:id="@+id/text3"
		android:layout_width="wrap_content"
		android:layout_height="wrap_content"
		android:paddingRight="10px"
	/>

</LinearLayout>

数据库处理类

package com.example.sqlitetest;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

public class DBHelper extends SQLiteOpenHelper {

	private static final String DB_NAME="coll.db";
	//????
	private static final String TBL_NAME="logtable";
	//????SQL???
	private static final String CREATE_TBL = "create table logtable " +
			"(_id integer primary key autoincrement,name text,url text,desc text)";
	//SQLiteDatabase???
	private SQLiteDatabase db;

	public DBHelper(Context context) {
		super(context, DB_NAME, null, 2);

	}
	@Override
	public void onCreate(SQLiteDatabase db) {

		db.execSQL(CREATE_TBL);
	}

	//??????
	public void open(){
		db = getWritableDatabase();
	}

	@Override
	public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
		// TODO Auto-generated method stub
	}

	//??????
	public void insert(ContentValues values){

		db.insert(TBL_NAME, null, values);
	}

	//???????
	public Cursor query(){
		Cursor c = db.query(TBL_NAME, null, null, null, null, null, null);
		return c;
	}

	//???
	public void del(int id){
		db.delete(TBL_NAME, "_id=?", new String[]{String.valueOf(id)});
	}

	//???????
	public void close(){
		if (db != null){
			db.close();
		}
	}
}

启动配置文件

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.sqlitetest"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="18" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.example.sqlitetest.ActivityMain_1"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name="com.example.sqlitetest.QueryActivity"></activity>
    </application>

</manifest>
时间: 2024-12-15 12:50:08

android数据库 Android自带数据库SQLite 操作 一步一步 图示教程的相关文章

Android内部自带的SQLite数据库操作dos命令

1:什么叫做SQLite数据库 Android系统内核是Linux系统,Android系统很特殊,他自带了一个SQLite数据库,轻量型的一款嵌入式的数据库 它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了.操作简单,你如果是之前学过其他的数据库的基础的话, 操作起来可以说是举手之劳. 2:这个SQLite数据库的数据类型有哪些. Integer  整型  有符号整数 -1,0,1,2,3- Real 浮点型以 8字节 IEEE 浮点数存储. Text. 值是文本字符串,使用数据

[Android] SQLite数据库之增删改查基础操作

    在编程中常常会遇到数据库的操作,而Android系统内置了SQLite,它是一款轻型数据库,遵守事务ACID的关系型数据库管理系统,它占用的资源非常低,可以支持Windows/Linux/Unix等主流操作系统,同一时候可以跟非常多程序语言如C#.PHP.Java等相结合.以下先回想SQL的基本语句,再讲述Android的基本操作. 一. adb shell回想SQL语句     首先,我感觉自己整个大学印象最深的几门课就包含<数据库>,所以想先回想SQL增删改查的基本语句.而在And

无废话Android之android下junit测试框架配置、保存文件到手机内存、android下文件访问的权限、保存文件到SD卡、获取SD卡大小、使用SharedPreferences进行数据存储、使用Pull解析器操作XML文件、android下操作sqlite数据库和事务(2)

1.android下junit测试框架配置 单元测试需要在手机中进行安装测试 (1).在清单文件中manifest节点下配置如下节点 <instrumentation android:name="android.test.InstrumentationTestRunner" android:targetPackage="com.example.demo1" /> 上面targetPackage指定的包要和应用的package相同. (2)在清单文件中ap

android之存储篇_SQLite数据库_让你彻底学会SQLite的使用

标签: Androiddatabase存储 2013-08-24 07:51 29984人阅读 评论(5) 收藏 举报  分类: android 基础知识(74)  数据库(3)  版权声明:本文为博主原创文章,未经博主允许不得转载. SQLite最大的特点是你可以把各种类型的数据保存到任何字段中,而不用关心字段声明的数据类型是什么. 例如:可以在Integer类型的字段中存放字符串,或者在布尔型字段中存放浮点数,或者在字符型字段中存放日期型值. 但有一种情况例外:定义为INTEGER PRIM

Android开发系列(九):创建数据库以及完成简单的CRUD操作

本篇博文主要实现简单的创建数据库以及实现CRUD操作. 首先,我们建立一个Android Project,命名为db 一.完成数据库的创建操作: 用SQLiteOpenHelper类中的getWritableDatabase()和getReadableDatabase()都可以获取一个操作数据库的SQLiteDatabase实例,其中getReadableDatabase()方法中会调用getWritableDatabase()方法. 区别:其中,getWritableDatabase() 方法

Android 学习笔记之如何使用SQLite数据库来保存数据...

PS:最近一阵子都在为考试复习...坑爹的计算机网络,复习了3天,最后该不会的还是不会...明天还考英语...真蛋疼... 学习内容: 1.使用SQLite数据库来保存数据... SQLite:   SQLite一个轻量级的数据库,数据库这东西就是为了保存大量数据而存在的一个工具,SQLite支持SQL语言,其实和Mysql差不多,语句基本都是一样的,增删改查也非常的方便...SQLite独立性非常的好,使用SQLite不需要安装...不依赖与任何的引擎就可以独立的去执行...感觉这一点还是非常

Android:日常学习笔记(10)———使用LitePal操作数据库

Android:日常学习笔记(10)---使用LitePal操作数据库 引入LitePal 什么是LitePal LitePal是一款开源的Android数据库框架,采用了对象关系映射(ORM)的模式,将平时开发时最常用的一些数据库功能进行了封装,使得开发者不用编写一行SQL语句就可以完成各种建表.増删改查的操作.并且LitePal很"轻",jar包大小不到100k,而且近乎零配置,这一点和Hibernate这类的框架有很大区别.目前LitePal的源码已经托管到了GitHub上. 关

Android通过webservice对sqlserver数据库进行操作

首页在AndroidManifest.xml中添加访问数据库权限 <uses-sdk android:minSdkVersion="7" /> <uses-permission android:name="android.permission.INTERNET" /> 在src中新建一个连接webservice的类,名字随意,这里叫做“HttpConnSoap”.基本上这个类是固定的,要改的大多数就是webservice端口地址,具体代码如下

Android中个人推崇的数据库使用方式

手机应用开发中经常会使用到数据库存储一些资料或者进行数据缓存,android中为我们提供了一个轻量的数据库,在上层进行了一层封装,同时还为我们提供了ContentProvider的框架,方便我们进行数据操作,以及在不同的程序之间进行数据共享.本文介绍一下,我在使用数据库的一些我认为比较好的习惯,欢迎与我讨论. 关于框架 通常网络操作,Json解析,我都会使用框架,这样可以很好的帮助我处理异常,处理异步操作.但是数据库操作我则使用自带的SQLiteHelper和ContentProvider,这样