Android学习之SQLite

原创 2012年03月31日 11:47:11

1.SQLite简介:

SQLite是一款轻型的数据库,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常低,能够支持Windows/Linux/Unix等等主流的操作系统,同时可以喝很多种程序语言相结合,比如PHP、JAVA等。

SQLite虽然很小巧,但是支持的SQL语言不会逊色于其他开源数据库。

SQLite数据库的核心引擎不需要依赖第三方软件,也不需要所谓的“安装”。

SQLite数据库中所有的信息都包含在一个文件夹内,方便管理和维护。

SQLite数据库通过数据库级上的独占性和共享锁来实现独立的事务处理。这意味着多个线程可以再同一时间从同一数据库读取数据,但只能有一个可以写入数据。

2.SQLite使用简介:

本例子主要完成的功能是:点击一下按钮实现对数据库的建立、更新;以及对数据的插入、修改、查询、删除等功能;

首先自定义一个类继承SQLiteOpenHelper类;

package com.douf.android.db;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;

public class DatebaseHelper extends SQLiteOpenHelper{
	//定义要建立的数据库名;
	private static final String DBNAME="test1";
	//定义要建立的数据库的版本号;
	private static final int VERSION=1;
	//构造器;分别为:上下文、表名、... 、版本号;
	public DatebaseHelper(Context context, String name, CursorFactory factory,
			int version) {
		super(context, DBNAME, null, version);
	}	
	//创建数据库
	@Override
	public void onCreate(SQLiteDatabase db) {
		db.execSQL("create table person(id integer primary key autoincrement,name varchar(20),password varchar(20))");
	}
	//更新数据库
	@Override
	public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
		
	}
}

在main.xml中的配置定义几个简单的Button:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical" >

<Button 
    android:id="@+id/createButton"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="@string/createdatabase"/>
<Button 
    android:id="@+id/updateButton"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="@string/updatedatabase"/>
<Button
    android:id="@+id/insert"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="@string/insert"/>
<Button
    android:id="@+id/update"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="@string/update"/>
<Button
    android:id="@+id/query"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="@string/query"/>
<Button
    android:id="@+id/delete"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="@string/delete"/>
</LinearLayout>

在string.xml中的一些配置:

<?xml version="1.0" encoding="utf-8"?>
<resources>

    <string name="hello">Hello World, SqliteActivity!</string>
    <string name="app_name">Sqlite</string>
    <string name="createdatabase">创建数据库</string>
    <string name="updatedatabase">更新数据库</string>
    <string name="insert">插入数据</string>
    <string name="update">更新数据</string>
    <string name="query">查询数据</string>
    <string name="delete">删除数据</string>

</resources>

然后定义一个继承Activity类来完成对数据库的各种操作:

package com.douf.android;

import com.douf.android.db.DatebaseHelper;

import android.app.Activity;
import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class SqliteActivity extends Activity {
    /** Called when the activity is first created. */
	//定义main.xml中配置的Button
	private Button createButton;
	private Button updateButton;
	private Button insert;
	private Button update;
	private Button query;
	private Button delete;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        //通过findviewById来得到那些Button空间;
        createButton=(Button) findViewById(R.id.createButton);
        updateButton=(Button) findViewById(R.id.updateButton);
        insert=(Button) findViewById(R.id.insert);
        update=(Button) findViewById(R.id.update);
        query=(Button) findViewById(R.id.query);
        delete=(Button) findViewById(R.id.delete);
        
        //为每个Button设置监听器
        createButton.setOnClickListener(new ButtonListener1());
        updateButton.setOnClickListener(new ButtonListener2());
        insert.setOnClickListener(new ButtonListener3());
        update.setOnClickListener(new ButtonListener4());
        query.setOnClickListener(new ButtonListener5());
        delete.setOnClickListener(new ButtonListener6());
    }
    //创建数据库
    class ButtonListener1 implements OnClickListener{
		@Override
		public void onClick(View v) {
			//创建一个DatebaseHelper对象
			DatebaseHelper dbHelper=new DatebaseHelper(SqliteActivity.this, "DBNAME", null, 1);
			//只有调用了SQLiteOpenHelper的getReadableDatabase或者getWritableDatabase才能真正的创建数据库
			SQLiteDatabase db=dbHelper.getReadableDatabase();
		}
    }
    //更新数据库
    class ButtonListener2 implements OnClickListener{

		@Override
		public void onClick(View v) {
			DatebaseHelper dbHelpler=new DatebaseHelper(SqliteActivity.this, "DBNAME", null, 3);
			SQLiteDatabase db=dbHelpler.getReadableDatabase();
		}
    }
    //插入数据
    class ButtonListener3 implements OnClickListener{

		@Override
		public void onClick(View v) {
			DatebaseHelper dbHelper=new DatebaseHelper(SqliteActivity.this, "DBNAME", null, 3);
			SQLiteDatabase db=dbHelper.getWritableDatabase();
			ContentValues values=new ContentValues();
		    values.put("name", "zhangsan");
			values.put("password", "123456");
			db.insert("person", null, values);
		}	
    }
    //修改数据
    class ButtonListener4 implements OnClickListener{

		@Override
		public void onClick(View v) {
			DatebaseHelper dbHelper=new DatebaseHelper(SqliteActivity.this, "DBNAME", null, 3);
			SQLiteDatabase db=dbHelper.getWritableDatabase();
			ContentValues values=new ContentValues();
			values.put("name", "zhangsan");
			db.update("person", values, "id=?", new String[]{"1"});
		}	
    }
    //查询数据
    class ButtonListener5 implements OnClickListener{

		@Override
		public void onClick(View v) {
			DatebaseHelper dbHelper=new DatebaseHelper(SqliteActivity.this, "DBNAME", null, 3);
			SQLiteDatabase db=dbHelper.getReadableDatabase();
			Cursor cursor=db.query("person", new String[]{"id","name","password"}, "id=?", new String[]{"1"}, null, null, null);
			while (cursor.moveToNext()) {
				int id=cursor.getInt(cursor.getColumnIndex("id"));
				String name=cursor.getString(cursor.getColumnIndex("name"));
				String password=cursor.getString(cursor.getColumnIndex("password"));
				System.out.println(id+"\t"+name+"\t"+password);	
			}
		}
    }
    //删除数据
    class ButtonListener6 implements OnClickListener{

		@Override
		public void onClick(View v) {
			DatebaseHelper dbHelper=new DatebaseHelper(SqliteActivity.this, "DBNAME", null, 3);
			SQLiteDatabase db=dbHelper.getWritableDatabase();
			db.delete("person", "id=?", new String[]{"1"});
		}
    }
}

3.在DOS环境对SQLite数据库的操作步骤:

adb shell

cd data

cd data

cd com.douf.android 进入本实例的包

cd databases 进入此实例SQLite数据库

sqlite3 建立的数据库名

.schema 可以查看此数据库的

这时就可以通过简单的SQL语句进行操作了。

以上就是对SQLite的简单使用。

Android SQLite数据库小结

最近又重新温习了下数据库,做一下小结:SQLiteOpenHelperSQLiteOpenHelper是一个抽象类,包含两个抽象方法,onCreate和onUpdate。一般先对SQLiteOpenH...
  • Xtick
  • Xtick
  • 2016年10月12日 00:25
  • 170

Android的数据库(SQLite)学习

Android数据库的学习(SQLite)
  • llayjun
  • llayjun
  • 2016年05月19日 16:02
  • 330

Android数据读取之Sqlite数据库操作

安卓开发只SQLite数据库操作实例
  • GISShiXiSheng
  • GISShiXiSheng
  • 2013年12月18日 11:22
  • 5086

利用SQLite数据库实现登陆和注册

http://www.cnblogs.com/greatverve/archive/2011/12/27/2301601.html
  • afanyusong
  • afanyusong
  • 2015年04月06日 13:13
  • 371

Android学习之SQLite数据库简单测试实例

MyOpenDB.java文件 package com.example.androidsqlite; import android.content.Context; import android....
  • wyh09102010
  • wyh09102010
  • 2013年09月18日 08:40
  • 1924

Android之SQLite学习

我们在使用SQLite的时候,一般都是直接封装一个SQLiteOpenHelper类,然后对类进行操作,所以这里我主要讲一下如何使用SQLiteOpenHelper。 package com.and...
  • u014702332
  • u014702332
  • 2016年03月15日 11:35
  • 92

Android学习之SQLite

SQLite是Android自带的一个轻量级数据库。下面来学习如何使用它 首先需要自定义一个类来继承SQLiteOpenHelper 这个抽象类。 需要实现里面的两个方法onCreate() 和 on...
  • u014679097
  • u014679097
  • 2015年11月10日 14:44
  • 33

android框架搭建——封装一个属于自己的数据存储工具类(SQLite篇)

当我们缓存本地的数据存在一对多(一个name对应多个values)的情况时,sharedPreferences已经无法胜任存储的工作了。此时我们需要使用SQLite来进行本地缓存。 直接使用SQlit...
  • cai554112503
  • cai554112503
  • 2015年12月01日 20:01
  • 805

Android学习之SQLite学习

花了2天时间,系统学习了下Android开发过程中使用的轻量级数据库SQLite的使用。并掌握其增,删,该,查的基本数据库操作。 首先要使用SQLite数据库,需要通过Android系统提供的SQLi...
  • welthy
  • welthy
  • 2015年07月16日 15:33
  • 556

SQLite数据库---ListView控件之商品展示案例

开发一个购物车,需要将购物车中的商品以陈列的形式展示,并且还需要对购物车的商品进行增删改查操作。要实现这些功能就需要使用ListView和SQLite数据库。接下来通过一个“商品展示”案例实现在界面上...
  • winnie_hu
  • winnie_hu
  • 2017年04月20日 07:32
  • 658
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android学习之SQLite
举报原因:
原因补充:

(最多只允许输入30个字)