- 浏览: 50529 次
文章分类
- 全部博客 (25)
- Android (19)
- startActivityForResult() (1)
- Intent (3)
- HTML (1)
- onCreate (1)
- Button (3)
- OnClick (3)
- Activity (2)
- savedInstanceState (1)
- Service (2)
- message (1)
- Notification (1)
- Broadcast (1)
- SQLite (1)
- SharePreferences (1)
- Galaxy 9300 (1)
- 刷机 (1)
- root (1)
- ContentProvider (1)
- 笔记本 (1)
- 散热 (1)
- 算法 (3)
- C (4)
- socket (0)
- java (0)
最新评论
SQLite是一种轻量级的,嵌入式的数据库系统,它占用的资源非常低。SQLite通过文件来保存数据库与,一个文件就是一个数据库。
Android平台下数据库相关类
◆SQLiteOpenHelper 抽象类:通过从此类继承实现用户类,来提供数据库打开、关闭等操作函数。
◆SQLiteDatabase 数据库访问类:执行对数据库的插入记录、查询记录等操作。
◆SQLiteCursor 查询结构操作类:用来访问查询结果中的记录。
- SQLiteOpenHelper抽象类
package com.test.sqlitedemo; import android.R.integer; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteDatabase.CursorFactory; import android.database.sqlite.SQLiteOpenHelper; import android.os.DropBoxManager; import android.provider.Contacts.Intents.Insert; import android.text.style.SuperscriptSpan; import android.widget.TableLayout; public class dbHelper extends SQLiteOpenHelper { private static String dbname = "data.db"; private static int version = 1; //构造方法1(一般用方法1比较好,应为数据库名字和版本不会改变) public dbHelper(Context context) { super(context, dbname, null, version); } //构造方法2 public dbHelper(Context context,String name,CursorFactory cursorFactory,int version) { //调用父类的构造方法 super(context, name, cursorFactory, version); } @Override public void onCreate(SQLiteDatabase db) { // 创建数据库后,对数据库的操作(比如建表) db.execSQL("CREATE TABLE IF NOT EXISTS person (id INTEGER PRIMARY KEY AUTOINCREMENT, name VARCHAR(20), age INTEGER)"); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { // 更新数据库版本的操作 db.execSQL("DROP TABLE IF EXISTS person"); onCreate(db); } }
SQLiteOpenHelper主要的三个方法是:
①构造方法:
public dbHelper(Context context){}
或
public dbHelper(Context context,String name,CursorFactory cursorFactory,int version){}
其中,context是上下文环境,一般是Activity;name是数据库名字;cursorFactory是游标工程,一般为null;version是指现在数据库版本,由自己指定。
②onCreate(){}方法
public void onCreate(SQLiteDatabase db){}
这个方法在数据库第一次创建的时候调用,一般是做一些数据库的初始化工作,比如建表。
这个方法的参数是一个SQLiteDatabase数据库,建表之类的工作,就是通过调用db.execSQL()完成。
③onUpgrade(){}
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion){}
这个方法在更新数据库的时候调用,进行的是一些更新的操作。
- SQLiteDatabase 数据库的使用:
要获取SQLiteDatebase对象,可以使用
SQLiteDatabase db = databaseHelper.getWritableDatabase();
或者
SQLiteDatabase db = databaseHelper.getReaderableDatabase();
二者的区别是:在数据库是可读写时,无异;当数据库是只读时,前者会抛出异常。
获取了db对象后,利用execSQL()方法,就可以对数据库进行增删改查操作了。
例如:
db.execSQL("DROP TABLE IF EXISTS person"); db.execSQL("CREATE TABLE person(id INTEGER PRIMARY KEY AUTOINCREMENT,name VARCHAR(20), age INTEGER)");
可以使用DDL语言。
对于不熟悉SQL语言的程序员,也可以使用SQLiteDatebase提供的方法:
db.query(),db.insert(),db.update(),db.delete()
这些方法会和哈希键--值对ContentValues一起用到,例如:
ContentValues contentValues = new ContentValues(); contentValues.put("name", person.getName()); contentValues.put("age", person.getAge()); database.insert("person", null, contentValues);
- Cursor的使用:
通过db.rawQuery()返回的查询结果,可以用Cursor来指向他们。
Cursor指向的是返回结果的第1个记录的前面一个节点,所以要获取操作第一个记录,需要 Cursor.moveToNext()。
例如:
String args[]={et_id.getText().toString()}; Cursor cursor=db.rawQuery("select name,age from student where id=?",args); if(cursor.moveToNext()) { et_name.setText(cursor.getString(cursor.getColumnIndex("name"))); et_age.setText(cursor.getString(cursor.getColumnIndex("age"))); Toast.makeText(MainActivity.this, "查詢成功", Toast.LENGTH_LONG).show(); }
下面的代码示出Acitivity里面,如何使用这些SQLite
package com.test.sqlitedemo; import android.R.integer; import android.R.string; import android.os.Bundle; import android.app.Activity; import android.content.ContentValues; import android.content.DialogInterface.OnClickListener; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; import android.support.v4.app.NavUtils; public class MainActivity extends Activity { private Button btn_selcet,btn_insert,btn_update,btn_delete; private EditText et_id,et_name,et_age; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btn_selcet=(Button)findViewById(R.id.btn_select); btn_insert=(Button)findViewById(R.id.btn_insert); btn_update=(Button)findViewById(R.id.btn_update); btn_delete=(Button)findViewById(R.id.btn_delete); et_id=(EditText)findViewById(R.id.et_id); et_name=(EditText)findViewById(R.id.et_name); et_age=(EditText)findViewById(R.id.et_age); btn_selcet.setOnClickListener(listener); btn_insert.setOnClickListener(listener); btn_update.setOnClickListener(listener); btn_delete.setOnClickListener(listener); } View.OnClickListener listener=new View.OnClickListener() { @Override public void onClick(View v) { // 獲取SQLiteDatabase實例db,然後對各個事件調用db的不同操作 DBHelper dbHelper=new DBHelper(MainActivity.this); SQLiteDatabase db=dbHelper.getWritableDatabase(); switch (v.getId()) { case R.id.btn_select://查詢 if(et_id.getText().toString()!=null) { String args[]={et_id.getText().toString()}; Cursor cursor=db.rawQuery("select name,age from student where id=?",args); if(cursor.moveToNext()) { et_name.setText(cursor.getString(cursor.getColumnIndex("name"))); et_age.setText(cursor.getString(cursor.getColumnIndex("age"))); Toast.makeText(MainActivity.this, "查詢成功", Toast.LENGTH_LONG).show(); } } else { Toast.makeText(MainActivity.this, "查詢ID不能為空", Toast.LENGTH_LONG).show(); } break; case R.id.btn_insert://添加 if (et_id.getText().toString()!=null) { db.execSQL("insert into student(id,name,age) values(?,?,?)",new String[]{et_id.getText().toString(),et_name.getText().toString(),et_age.getText().toString()}); Toast.makeText(MainActivity.this, "添加"+et_id.getText().toString()+"成功", Toast.LENGTH_LONG).show(); } else { Toast.makeText(MainActivity.this, "插入ID不能為空", Toast.LENGTH_LONG).show(); } break; case R.id.btn_update://更新 db.execSQL("update student set name=?,age=? where id=?",new String[]{et_name.getText().toString(),et_age.getText().toString(),et_id.getText().toString()}); Toast.makeText(MainActivity.this, "更新成功", Toast.LENGTH_LONG).show(); break; case R.id.btn_delete://刪除 db.execSQL("delete from student where id=?",new String[]{et_id.getText().toString()}); et_id.setText(""); et_name.setText(""); et_age.setText(""); Toast.makeText(MainActivity.this, "刪除成功", Toast.LENGTH_LONG).show(); break; default: break; } } }; @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.activity_main, menu); return true; } }
发表评论
-
ContentProvider
2012-08-09 14:43 856ContentProvider学习笔记 ContentPro ... -
Galaxy 9300 刷机和获取root权限
2012-08-08 14:19 1619刷机和ROOT是两个不同但是很类似的动作。 刷机应该就 ... -
SharedPreferences 存储
2012-07-27 20:02 929SharedPreferences是Android平台 ... -
Android Broadcast 广播
2012-07-23 10:47 946从现实生活中理解广播机制 一听到广播我们第一感觉就会联 ... -
Status Notification
2012-07-22 18:12 1353Status Notification是作用是在页眉的位置,提 ... -
Android Message机制
2012-07-20 11:01 1211参考链接http://www.cnblogs.com/hnra ... -
Android Service之bindService()
2012-07-17 14:37 1224http://www.cnblogs.com/onlylitt ... -
Android Service 之StartService()
2012-07-17 10:25 11795Service是android 系统中的一种组件,它跟Acti ... -
Activity_savedInstanceState
2012-07-14 10:31 4026假设有两个Activity,分别是MainActivity,S ... -
Activity生命周期
2012-07-13 11:24 763Activity的生命周期图如上所示 用一个实例来测试 ... -
ButtonDemo_OnClick_2
2012-07-13 00:47 634public void onCreate(Bundle ... -
intentDemo_2
2012-07-13 00:45 784<manifest xmlns:android=& ... -
intentDemo_1
2012-07-13 00:45 605package com.test.intentdemo; ... -
ButtonDemo_OnClick_3
2012-07-13 00:45 600package com.test.buttondemo; ... -
ButtonDemo_OnClick_1
2012-07-12 22:51 900public class MainActivity ex ... -
Android开发——关于onCreate的解读
2012-07-12 22:48 622在AndroidManifest.xml文件中的< ... -
startActivityForResult()的用法
2012-07-12 22:43 1616参考链接:http://www.cnblogs.com/mub ... -
Intent传递数据从一个Activity到另一个Activity
2012-07-12 21:19 11831MainActivity package com.te ...
相关推荐
总的来说,通过SQLite存储带有照片的联系人管理信息是一种实用且高效的方法,它允许我们在本地或远程设备上轻松地管理和检索包含多媒体数据的联系人信息。通过熟练掌握BLOB类型和相关的数据库操作技巧,开发者可以...
在linux环境下,用SQLITE存储数据,并通过HTTP,以JSON格式发送到服务器。
SQLite是一个轻量级、自包含的数据库引擎,常用于桌面应用的数据存储。本篇文章将详细探讨如何在WPF应用中使用SQLite数据库来存储和读取二进制图片。 一、SQLite简介 SQLite是一款开源、无服务器、零配置、事务性的...
在Android开发中,SQLite是一个非常重要的数据库管理系统,用于存储应用程序中的结构化数据。SQLite支持多种数据类型,包括整型、浮点型、字符串以及BLOB(二进制大对象),这使得它能够处理各种复杂的数据需求。本...
本篇将详细讲解如何在Android应用中使用SQLite存储数据以及如何在SDCard(外部存储)上创建数据库。 首先,我们需要在Android项目中创建一个SQLite数据库。这通常通过实现`SQLiteOpenHelper`的子类来完成。`...
在"Sqlite存储图片"的实践中,我们通常会遇到以下几个关键知识点: 1. **二进制数据存储**:Sqlite支持BLOB(Binary Large Object)类型,可以用来存储图片、音频或视频等二进制数据。图片会被转换为字节流并存储在...
本项目“swift-用swift写的服务器接口-支持Sqlite存储数据.zip”显然是一个使用Swift构建的服务器应用程序,该应用程序包含了与SQLite数据库交互的功能,使得在服务器端可以处理和存储数据。 首先,我们来了解一下...
"Android 手机 App 程序中 SQLite 数据存储应用" Android 手机 App 程序中 SQLite 数据存储应用是 Android 手机 App 程序开发中的一个重要组成部分。随着 IT 行业的高速发展,移动通信技术的更新速度日新月异。...
Android 数据存储 SQLite Android 数据存储是 Android 应用程序中的一个重要组件,它负责存储和管理应用程序中的数据。在 Android 中,有多种数据存储方式,包括 SharedPreferences、内部文件存储、SD 卡存储和 ...
在Android系统中,SQLite是默认的数据库解决方案,用于应用程序的数据存储。本篇文章将深入探讨如何使用SQLite数据库在Android中存储数据,特别是通过编程接口SQLiteDatabase进行操作。 首先,`SQLiteDatabase`类...
在本教程中,我们将探讨如何利用Sqlite来存储数据,并实现基本的数据库操作:增(添加数据)、删(删除数据)、改(修改数据)和查(查询数据)。 ### 一、Sqlite数据库的创建与连接 首先,你需要在你的应用程序中...
在Android应用开发中,SQLite是一个重要的本地数据存储解决方案。SQLite是一个轻量级的数据库系统,它内嵌在Android操作系统中,允许开发者以结构化方式存储和管理数据。本篇文章将深入探讨Android中的SQLite数据库...
SQLite3 不提供特定的日期和时间数据类型,而是允许用户以 TEXT、REAL 或 INTEGER 的形式存储日期和时间值。这种灵活性使得 SQLite3 在各种应用场景下都能适应,但同时也需要开发者对存储和处理日期时间的格式有清晰...
本文将深入探讨如何在Android中使用SQLite存储数据。 首先,我们需要创建一个SQLite数据库。在Android中,我们通常通过继承`SQLiteOpenHelper`来实现。这个类提供了创建和升级数据库的接口。在`DBService`类中,...
SQLite 是一个轻量级的数据库引擎,常用于 Android 应用程序中,为应用程序提供本地数据存储功能。在 Android 平台上,SQLite 提供了一种高效、可靠且易于使用的数据管理方式,尤其适合处理中小规模的数据。在本案例...
本示例重点讲解了如何利用C#与SQLite数据库交互,特别是涉及到图片数据的存储和读取。 首先,我们需要在C#项目中引入SQLite的相关库。可以使用NuGet包管理器安装`System.Data.SQLite`,它提供了对SQLite数据库的...
SQLite数据库的存储方式非常适合于Android游戏开发中的数据存储,因为它占用的系统资源非常少,通常只需要几百KB的空间就可以在嵌入式设备中运行。由于其特点,它在内存和存储空间受限的移动设备上表现尤为突出,...
这是一个Android系统中SQLite数据库存储自定义对象的实例,具体做法是:将对象序列化为字节流字符串,然后将字节流字符串以TEXT类型存储在数据库中;在取数据时,将字节流反序列化为对象就行了。所以我们的实体类得...
这个“基于Python的SQLite数据库存储”主题主要涵盖如何利用Python与SQLite数据库进行交互,包括安装、连接、创建表、插入数据、查询数据以及事务处理等核心概念。 1. **Python与SQLite的集成** Python通过`sqlite...