SQLite数据库编程
来源:互联网 发布:三丰三坐标编程 编辑:程序博客网 时间:2024/06/06 17:59
在安卓中,使用比较多并且比较重要的数据库编程就是SQLite数据库了。SQLite数据库类似与MySqL数据库编程,底层也是SQL语言实现。
首先,SQLite存储有两种方式实现,一种是完全使用SQL语句来实现数据的增删改查操作,一种是使用谷歌官方提供的API来进行增删改查操作。下面就一一介绍这两种方式。
无论使用那种方式进行数据存储,建议使用SQLiteOpenHelper帮助类来创建数据库,不要使用SQLiteDatabase创建数据库。因为使用SQLiteDataBase来操作就显得笨重麻烦。SQLiteDatabase用来对已有数据库进行必要的操作。
使用SQL语句实现数据库操作
一、新建一个类继续自SQLiteOpenHelper
示例代码
public class MySqlitehelper extends SQLiteOpenHelper { public MySqlitehelper(Context context) { super(context, "contactinfo1.db", null, 2); //null 表示使用默认游标工厂 } @Override//数据库第一次创建时调用 public void onCreate(SQLiteDatabase db) { String sql="create table number1 (id integer primary key autoincrement , name varchar(20), phone int)"; db.execSQL(sql ); Log.e("数据库表", "创建表成功"); } /** * @param oldVersion 就得数据库版本 * @param newVersion 更新后的数据库版本 * @param db 数据库对象,用来对数据进行增删改查等操作 */ @Override//数据库更新时调用,数据库一旦创建成功,需要修改数据库表或者增加表的时候就在此方法实现 public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { }}
注意:还需要调用下面方法才可以真正创建数据库:
MySqlitehelper my=new MySqlitehelper(this); my.getWritableDatabase();
接下来就是对数据库数据进行操作:
package com.example.util;import android.content.Context;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;import android.widget.Toast;public class Contacts { /** * 实现联系人的增删改查 */ private MySqlitehelper helper; public Contacts(Context context){ helper=new MySqlitehelper(context); } /** * 增加一条联系人记录 * * @param name * 联系人名字 * @param number * 联系人号码 */ public void add(String name, int phone) { SQLiteDatabase db=helper.getWritableDatabase(); String sql="insert into number1 (name,phone) values(?,?)"; db.execSQL(sql, new Object[]{name,phone}); db.close(); } /** * 删除一条联系人记录 * * @param name * 联系人名字 */ public void delete(String name) { SQLiteDatabase db=helper.getWritableDatabase(); String sql="delete from number1 where name=?"; db.execSQL(sql, new String[]{name}); db.close(); } /** * 修改记录 * @param name 修改的用户名 * @param phone 修改的号码 */ public void update(String name,int phone) { String sql="update number1 set phone=? where name=?"; SQLiteDatabase db=helper.getWritableDatabase(); db.execSQL(sql, new Object[]{phone,name}); db.close(); } /** * 查询记录 * @param name 需要查询的用户 */ public int query(String name) { int query_phone =0; SQLiteDatabase db=helper.getReadableDatabase(); String sql="select * from number1 where name=?"; Cursor cursor=db.rawQuery(sql, new String[]{name}); if(cursor.moveToNext()){//一定要判断游标是否可以移动到下一行 query_phone=cursor.getInt(2);//Cursor是从0开始 } cursor.close(); db.close(); return query_phone; } public void deleteAll(){ String sql="delete from number1"; SQLiteDatabase db=helper.getWritableDatabase(); db.execSQL(sql); db.close(); }}
到此,基本数据操作已经实现,剩下的就是根据具体业务逻辑来使用封装好的方法。
使用谷歌提供的API
同样创建一个帮助类:
## 示例代码 ##
package com.wnl.dao;import com.example.studentinfo.MainActivity;import com.example.studentinfo.R;import android.content.Context;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteOpenHelper;import android.util.Log;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;public class DataBaseHelper extends SQLiteOpenHelper { public DataBaseHelper(Context context) { super(context, "students.db", null, 1); } @Override public void onCreate(SQLiteDatabase db) { Log.e("DataBaseHelper", "onCreate"); String sql="create table students1(_id integer primary key autoincrement,"+ " id varchar(20), name varchar(20), number varchar(20) )"; db.execSQL(sql); Log.e("DataBaseHelper-->onCreate", "成功创建了表"); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { Log.e("DataBaseHelper", "onUpgrade"); }
接下来就是使用此类来进行数据操作:
package com.wnl.dao;import java.util.HashMap;import java.util.Map;import android.content.ContentValues;import android.content.Context;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;public class StudentsIpl { /** * 实现学生信息的增删改查 */ private DataBaseHelper dh; public StudentsIpl(Context context) { dh = new DataBaseHelper(context); } /** * 增加一条学生记录 * * @param id * 学生ID * @param name * 学生姓名 * @param number * 学生号码 */ public long addStudent(String id, String name, String number) { SQLiteDatabase db = dh.getWritableDatabase(); ContentValues cv = new ContentValues(); cv.put("id", id); cv.put("name", name); cv.put("number", number); long rowid = db.insert("students1", null, cv); db.close(); return rowid; } /** * 删除全部数据 */ public void deleteAll(){ SQLiteDatabase db=dh.getWritableDatabase(); db.delete("students1", null, null); db.close(); } /** * 删除指定数据 */ public void delete(String name){ SQLiteDatabase db=dh.getWritableDatabase(); db.delete("students1", "name=?", new String[]{name}); db.close(); } /**查询数据库一共有多少条记录 * */ public int getTotalInfo(){ SQLiteDatabase db=dh.getReadableDatabase(); Cursor cursor=db.query("students1", null, null, null, null, null, null); int count=cursor.getCount(); return count; }/** * 查询指定学生记录,并把记录封装到HashMap中 * @param position 需要查询记录的位置 * @return */ public Map<String, String> queryStudent(int position) { Map<String, String> map = new HashMap<String, String>(); SQLiteDatabase db = dh.getReadableDatabase(); Cursor cursor = db.query("students1", null, null, null, null, null, null);// 实现全部查询 cursor.moveToPosition(position); String id=cursor.getString(1);// 取得学生ID String name=cursor.getString(2);// 取得学生姓名 String number=cursor.getString(3);// 取得学生号码 map.put("id", id); map.put("name", name); map.put("number", number); cursor.close(); dh.close(); return map; }}
至此,两种方式来进行SQLite编程介绍好了。
0 0
- SQLite数据库编程详解
- 学习数据库sqlite编程
- Android SQlite数据库编程
- Android数据库编程SQLite
- SQLite数据库编程
- iOS编程------SQLite / 数据库
- SQLite数据库编程
- Linux数据库编程Sqlite
- sqlite数据库编程教程网站
- qt中SQLite数据库编程
- Android sqlite数据库编程基础
- Android编程中数据库SQLite
- Qt数据库SQLITE编程Demo
- 基于SQLITE数据库的C语言编程
- Linux下SQLite数据库移植与编程
- 基于sqlite数据库的C语言编程
- 基于SQLITE数据库的C语言编程
- 基于SQLITE数据库的C语言编程
- C++第三次作业
- [Linux]实例浅析epoll的水平触发和边缘触发,以及边缘触发为什么要使用非阻塞IO
- CSDN-markdown编辑器使用进阶篇
- HDU:1220 Cube(数学)
- CocoaPods pod install/pod update更新慢的问题
- SQLite数据库编程
- Program2_1010
- 转载/日志记录的作用和方法
- 文章标题
- 傅里叶变换的应用
- CCF之日期计算
- nyoj 57
- Struts2 笔记 2
- ListView中item点击失效