实验 11 SQLite数据库的使用
SQLiteDatabase的使用
SQLiteDatabase的使⽤新建DBHeler.JAVA1package com.hixin.db;23import java.util.ArrayList;4import java.util.HashMap;56import er;78import android.content.ContentValues;9import android.content.Context;10import android.database.Cursor;11import android.database.sqlite.SQLiteDatabase;12import android.database.sqlite.SQLiteOpenHelper;1314public class DBHelper extends SQLiteOpenHelper{15public final static String DB_NAME = "contact";16public final static int VERSION = 1;17private static DBHelper instance = null;18private SQLiteDatabase db;1920//单例模式21private DBHelper(Context context) {22super(context,DB_NAME,null,VERSION);23 }2425public static DBHelper getInstance(Context context) {26if(instance == null) {27 instance = new DBHelper(context);28 }29return instance;30 }31private void openDatabase() {32if(db == null) {33 db = this.getReadableDatabase();34 }35 }3637 @Override38public void onCreate(SQLiteDatabase db) {39// TODO Auto-generated method stub40 StringBuffer tableCreate = new StringBuffer();41 tableCreate.append("create table user (_id integer primary key autoincrement,")42 .append("name text,")43 .append("mobilephone text,")44 .append("familyphone text,")45 .append("officephone text,")46 .append("position text,")47 .append("company text,")48 .append("address text,")49 .append("email text,")50 .append("othercontact text,")51 .append("zipcode text,")52 .append("remark text,")53 .append("imageid int)");5455 db.execSQL(tableCreate.toString());56 }5758 @Override59public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {60// TODO Auto-generated method stub61 String sql = "drop table if exists user";62 db.execSQL(sql);63 onCreate(db);64 }6566public long save(User user) {67 openDatabase();68 ContentValues value = new ContentValues();69 value.put("name", ername);70 value.put("mobilephone", user.mobilePhone);71 value.put("familyphone", user.familyPhone);72 value.put("officephone", user.officePhone);73 value.put("position", user.position);74 value.put("address", user.address);75 value.put("email", user.email);76 value.put("othercontact", user.otherContact);77 value.put("zipcode", user.zipCode);78 value.put("remark", user.remark);79 value.put("imageid", user.imageId);8081return db.insert("user", null, value);82 }8384public ArrayList getUserList() {85 openDatabase();86 Cursor cursor = db.query("user", null, null, null, null, null, null);87 ArrayList list = new ArrayList();88while (cursor.moveToNext()) {89 HashMap map = new HashMap();90 map.put("imageid", cursor.getInt(cursor.getColumnIndex("imageid")));91 map.put("name", cursor.getString(cursor.getColumnIndex("name")));92 map.put("mobilephone", cursor.getString(cursor.getColumnIndex("mobilephone")));93 list.add(map);94 }95return list;96 }9798 }主函数中调⽤//save user to databaseDBHelper.getInstance(MainActivity.this).save(user);save()调⽤openDatabase(),如果数据库不存在,则⾃动调⽤数据库的onCreate()//检索数据库ArrayList data = DBHelper.getInstance(this).getUserList();tv_name.setText((CharSequence) ((HashMap) data.get(position)).get("name"));另外⼀种版本package com.example.healthembed;import java.util.ArrayList;import java.util.HashMap;import java.util.Map;import com.example.healthembed.dummy.BloodPre;import android.content.ContentValues;import android.content.Context;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteOpenHelper;import android.widget.Toast;public class DatabaseHelper extends SQLiteOpenHelper {private static final String DB_NAME = "person.db"; //数据库名称private static final int version = 1; //数据库版本private static DatabaseHelper instance = null;private SQLiteDatabase db;//单例模式public static DatabaseHelper getInstance(Context context) {if(instance == null) {instance = new DatabaseHelper(context);}return instance;}private void openDatabase() {if(db == null) {db = this.getReadableDatabase();}}public DatabaseHelper(Context context) {super(context, DB_NAME, null, version);}@Overridepublic void onCreate(SQLiteDatabase db) {// TODO Auto-generated method stub/* StringBuffer tableCreate = new StringBuffer();tableCreate.append("create table user (_id integer primary key autoincrement,").append("hp int,").append("lp int)");db.execSQL(tableCreate.toString());*/String tableCreate = new String();tableCreate="create table user (_id integer primary key autoincrement,name varchar(16),pdate text,hp int,lp int)"; db.execSQL(tableCreate);// Toast.makeText(MyApplication.getContext(), "数据保存成功", Toast.LENGTH_SHORT).show();}@Overridepublic void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {// TODO Auto-generated method stubString sql = "drop table if exists user";db.execSQL(sql);onCreate(db);}public long save(BloodPre user) {openDatabase();ContentValues value = new ContentValues();value.put("name", );value.put("pdate",user.time);value.put("hp", user.highp);value.put("lp", user.lowp);return db.insert("user", null, value);}public ArrayList getUserList() {openDatabase();Cursor cursor = db.query("user", null, null, null, null, null, null);ArrayList<Map> list = new ArrayList();while (cursor.moveToNext()) {HashMap map = new HashMap();map.put("name", cursor.getInt(cursor.getColumnIndex("name")));map.put("pdate", cursor.getString(cursor.getColumnIndex("pdate")));map.put("hp", cursor.getInt(cursor.getColumnIndex("hp")));map.put("lp", cursor.getInt(cursor.getColumnIndex("lp")));list.add(map);}return list;}}View Code封装性更好的,适合建⽴多个表!package com.example.health.util;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import com.example.health.bp.DatabaseHelper;import android.content.ContentValues;import android.content.Context;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteDatabase.CursorFactory;import android.database.sqlite.SQLiteOpenHelper;/*** @author wuzhixin* 有if语句的地⽅添加 else if代码就⾏* ⽬的在于⽤⼀个SQLiteOpenHelper⼦类创建多个表,并且表之间是独⽴的,不会⼀下在创建多个表*/public class GeneralDbHelper extends SQLiteOpenHelper{private static final String DB_NAME = "person.db"; //数据库名称private static final int version = 1; //数据库版本private static GeneralDbHelper instance = null;private SQLiteDatabase db;private Object bean;//单例模式public static GeneralDbHelper getInstance(Context context,Object userType) {if(instance == null) {instance = new GeneralDbHelper(context,userType);}return instance;}private void openDatabase() {if(db == null) {db = this.getReadableDatabase();}}public GeneralDbHelper (Context context,Object userType) {super(context, DB_NAME, null, version);this.bean = userType;}/* (non-Javadoc)* @see android.database.sqlite.SQLiteOpenHelper#onCreate(android.database.sqlite.SQLiteDatabase)*/@Overridepublic void onCreate(SQLiteDatabase db) {// TODO Auto-generated method stub/* StringBuffer tableCreate = new StringBuffer();tableCreate.append("create table user (_id integer primary key autoincrement,").append("hp int,").append("lp int)");db.execSQL(tableCreate.toString());*/String tableCreate = new String();if(bean instanceof User) {tableCreate = "CREATE TABLE zhongduanuser (shenfennum varchar(255) primary key,name varchar(64),regtime varchar(255),address varchar(255), birthdate varchar(255))"; db.execSQL(tableCreate);}// Toast.makeText(MyApplication.getContext(), "数据保存成功", Toast.LENGTH_SHORT).show();}@Overridepublic void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {// TODO Auto-generated method stubif(bean instanceof User) {String sql = "drop table if exists zhongduanuser";db.execSQL(sql);}onCreate(db);}public long save(Object obj) {openDatabase();ContentValues value = new ContentValues();if(obj instanceof User) {/*private String shenfennum;private String name;private String regtime;private String address;private String birthdate;*/value.put("shenfennum", ((User)obj).getShenfennum());value.put("name", ((User)obj).getName());value.put("regtime", ((User)obj).getRegtime());value.put("address", ((User)obj).getAddress());value.put("birthdate", ((User)obj).getBirthdate());return db.insert("zhongduanuser", null, value);}else{return 0;}}public List<?> getBeanList() {openDatabase();if(bean instanceof User) {Cursor cursor = db.query("zhongduanuser", null, null, null, null, null, null);List<User> list = new ArrayList<User>();while (cursor.moveToNext()) {User user = new User();user.setShenfennum(cursor.getString(cursor.getColumnIndex("shenfennum")));user.setName(cursor.getString(cursor.getColumnIndex("name")));user.setRegtime(cursor.getString(cursor.getColumnIndex("regtime")));user.setAddress(cursor.getString(cursor.getColumnIndex("address")));user.setBirthdate(cursor.getString(cursor.getColumnIndex("birthdate")));list.add(user);}return list;}else {return null;}}}View Code保存数据://创建数据库,保存⽤户信息到本地for (User suser : erList) {GeneralDbHelper.getInstance(MyApplication.getContext(), suser).save(suser);}使⽤数据:User user = new User();erList = GeneralDbHelper.getInstance(MyApplication.getContext(), user).getBeanList();上⾯的不能正确使⽤,下⾯的这个可以package com.example.health.util;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import android.content.ContentValues;import android.content.Context;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteDatabase.CursorFactory;import android.database.sqlite.SQLiteOpenHelper;* @author wuzhixin* 有if语句的地⽅添加 else if代码就⾏* ⽬的在于⽤⼀个SQLiteOpenHelper⼦类创建多个表,并且表之间是独⽴的,不会⼀下在创建多个表*/public class GeneralDbHelper extends SQLiteOpenHelper{private static final String DB_NAME = "person.db"; //数据库名称private static final int version = 1; //数据库版本private static GeneralDbHelper instance = null;private SQLiteDatabase db;//单例模式public static GeneralDbHelper getInstance(Context context) {if(instance == null) {instance = new GeneralDbHelper(context);}return instance;}private void openDatabase() {if(db == null) {db = this.getReadableDatabase();}}public GeneralDbHelper (Context context) {super(context, DB_NAME, null, version);}/* (non-Javadoc)* @see android.database.sqlite.SQLiteOpenHelper#onCreate(android.database.sqlite.SQLiteDatabase)*/@Overridepublic void onCreate(SQLiteDatabase db) {// TODO Auto-generated method stub/* StringBuffer tableCreate = new StringBuffer();tableCreate.append("create table user (_id integer primary key autoincrement,").append("hp int,").append("lp int)");db.execSQL(tableCreate.toString());*/String tableCreate1 = "CREATE TABLE zhongduanuser (shenfennum varchar(255) primary key,name varchar(64),regtime varchar(255),address varchar(255), birthdate varchar(255))"; db.execSQL(tableCreate1);String tableCreate2="create table xueya2 (_id integer primary key autoincrement,userid varchar(255),regdate varchar(64),shousuo int(11),shuzhang int(11),maibo int(11))";db.execSQL(tableCreate2);// Toast.makeText(MyApplication.getContext(), "数据保存成功", Toast.LENGTH_SHORT).show();}@Overridepublic void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {// TODO Auto-generated method stubString sql1 = "drop table if exists zhongduanuser";db.execSQL(sql1);String sql2 = "drop table if exists xueya2";db.execSQL(sql2);onCreate(db);}public long save(Object obj) {openDatabase();ContentValues value = new ContentValues();if(obj instanceof User) {/*private String shenfennum;private String name;private String regtime;private String address;private String birthdate;*/value.put("shenfennum", ((User)obj).getShenfennum());value.put("name", ((User)obj).getName());value.put("regtime", ((User)obj).getRegtime());value.put("address", ((User)obj).getAddress());value.put("birthdate", ((User)obj).getBirthdate());return db.insert("zhongduanuser", null, value);}else if(obj instanceof BloodPre){/*private String userid;private String time;private int highp;private int lowp;private int pulse;*/value.put("userid", ((BloodPre)obj).getUserid());value.put("regdate", ((BloodPre)obj).getTime());value.put("shousuo", ((BloodPre)obj).getHighp());value.put("shuzhang", ((BloodPre)obj).getLowp());value.put("maibo", ((BloodPre)obj).getPulse());return db.insert("xueya2", null, value);}else{return 0;}}public List<?> getBeanList(Object obj) {openDatabase();if(obj instanceof User) {Cursor cursor = db.query("zhongduanuser", null, null, null, null, null, null);List<User> list = new ArrayList<User>();while (cursor.moveToNext()) {User user = new User();user.setShenfennum(cursor.getString(cursor.getColumnIndex("shenfennum")));user.setName(cursor.getString(cursor.getColumnIndex("name")));user.setRegtime(cursor.getString(cursor.getColumnIndex("regtime")));user.setAddress(cursor.getString(cursor.getColumnIndex("address")));user.setBirthdate(cursor.getString(cursor.getColumnIndex("birthdate")));list.add(user);}return list;}else if(obj instanceof BloodPre){Cursor cursor = db.query("xueya2", null, null, null, null, null, null);List<BloodPre> list = new ArrayList<BloodPre>();while (cursor.moveToNext()) {BloodPre bloodpre = new BloodPre();bloodpre.setUserid(cursor.getString(cursor.getColumnIndex("userid")));bloodpre.setTime(cursor.getString(cursor.getColumnIndex("regdate")));bloodpre.setHighp(cursor.getInt(cursor.getColumnIndex("shousuo")));bloodpre.setLowp(cursor.getInt(cursor.getColumnIndex("shuzhang")));bloodpre.setPulse(cursor.getInt(cursor.getColumnIndex("maibo")));list.add(bloodpre);}return list;}else {return null;}}}View Code更新的版本:package com.example.health.util;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import android.content.ContentValues;import android.content.Context;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteDatabase.CursorFactory;import android.database.sqlite.SQLiteOpenHelper;/*** @author wuzhixin** ⽬的在于⽤⼀个SQLiteOpenHelper⼦类创建多个表*/public class GeneralDbHelper extends SQLiteOpenHelper{private static final String DB_NAME = "person.db"; //数据库名称private static final int version = 1; //数据库版本private static GeneralDbHelper instance = null;private SQLiteDatabase db;//单例模式public static GeneralDbHelper getInstance(Context context) {if(instance == null) {instance = new GeneralDbHelper(context);}return instance;}private void openDatabase() {if(db == null) {db = this.getReadableDatabase();}}public GeneralDbHelper (Context context) {super(context, DB_NAME, null, version);}/* (non-Javadoc)* @see android.database.sqlite.SQLiteOpenHelper#onCreate(android.database.sqlite.SQLiteDatabase) */@Overridepublic void onCreate(SQLiteDatabase db) {// TODO Auto-generated method stub/* StringBuffer tableCreate = new StringBuffer();tableCreate.append("create table user (_id integer primary key autoincrement,").append("hp int,").append("lp int)");db.execSQL(tableCreate.toString());*/String tableCreate1 = "CREATE TABLE zhongduanuser (shenfennum varchar(255) primary key,name varchar(64),regtime varchar(255),address varchar(255), birthdate varchar(255))"; db.execSQL(tableCreate1);String tableCreate2="create table xueya2 (_id integer primary key autoincrement,userid varchar(255),regdate varchar(64),shousuo int(11),shuzhang int(11),maibo int(11))";db.execSQL(tableCreate2);// Toast.makeText(MyApplication.getContext(), "数据保存成功", Toast.LENGTH_SHORT).show();}@Overridepublic void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {// TODO Auto-generated method stubString sql1 = "drop table if exists zhongduanuser";db.execSQL(sql1);String sql2 = "drop table if exists xueya2";db.execSQL(sql2);onCreate(db);}public long save(Object obj) {openDatabase();ContentValues value = new ContentValues();if(obj instanceof User) {/*private String shenfennum;private String name;private String regtime;private String address;private String birthdate;*/value.put("shenfennum", ((User)obj).getShenfennum());value.put("name", ((User)obj).getName());value.put("regtime", ((User)obj).getRegtime());value.put("address", ((User)obj).getAddress());value.put("birthdate", ((User)obj).getBirthdate());return db.insert("zhongduanuser", null, value);}else if(obj instanceof BloodPre){/*private String userid;private String time;private int highp;private int lowp;private int pulse;*/value.put("userid", ((BloodPre)obj).getUserid());value.put("regdate", ((BloodPre)obj).getTime());value.put("shousuo", ((BloodPre)obj).getHighp());value.put("shuzhang", ((BloodPre)obj).getLowp());value.put("maibo", ((BloodPre)obj).getPulse());return db.insert("xueya2", null, value);}else{return 0;}}public List<?> getBeanList(Object obj) {openDatabase();if(obj instanceof User) {Cursor cursor = db.query("zhongduanuser", null, null, null, null, null, null);List<User> list = new ArrayList<User>();while (cursor.moveToNext()) {User user = new User();user.setShenfennum(cursor.getString(cursor.getColumnIndex("shenfennum")));user.setName(cursor.getString(cursor.getColumnIndex("name")));user.setRegtime(cursor.getString(cursor.getColumnIndex("regtime")));user.setAddress(cursor.getString(cursor.getColumnIndex("address")));user.setBirthdate(cursor.getString(cursor.getColumnIndex("birthdate")));list.add(user);}return list;}else if(obj instanceof BloodPre){Cursor cursor = db.query("xueya2", null, null, null, null, null, null);List<BloodPre> list = new ArrayList<BloodPre>();while (cursor.moveToNext()) {BloodPre bloodpre = new BloodPre();bloodpre.setUserid(cursor.getString(cursor.getColumnIndex("userid")));bloodpre.setTime(cursor.getString(cursor.getColumnIndex("regdate")));bloodpre.setHighp(cursor.getInt(cursor.getColumnIndex("shousuo")));bloodpre.setLowp(cursor.getInt(cursor.getColumnIndex("shuzhang")));bloodpre.setPulse(cursor.getInt(cursor.getColumnIndex("maibo")));list.add(bloodpre);}return list;}else {return null;}}public List<?> getBeanList(Object obj,String userID) {openDatabase();if(obj instanceof BloodPre){String query = "select regdate,shousuo,shuzhang,maibo from xueya2 where userid = "+userID;Cursor cursor = db.query("xueya2", new String[]{"regdate,shousuo,shuzhang,maibo"},"userid=?", new String[]{userID}, null, null, null); List<BloodPre> list = new ArrayList<BloodPre>();while (cursor.moveToNext()) {BloodPre bloodpre = new BloodPre();bloodpre.setTime(cursor.getString(cursor.getColumnIndex("regdate")));bloodpre.setHighp(cursor.getInt(cursor.getColumnIndex("shousuo")));bloodpre.setLowp(cursor.getInt(cursor.getColumnIndex("shuzhang")));bloodpre.setPulse(cursor.getInt(cursor.getColumnIndex("maibo")));list.add(bloodpre);}return list;}else {return null;}}}View Code存数据://创建数据库,保存⽤户信息到本地for (User suser : erList) {GeneralDbHelper.getInstance(MyApplication.getContext()).save(suser);}取数据:User user = new User();erList = (List<User>) GeneralDbHelper.getInstance(MyApplication.getContext()).getBeanList(user);已有数据库时:1private final String DATABASE_PATH = android.os.Environment2 .getExternalStorageDirectory().getAbsolutePath()3 + "/dictionary";4//定义数据库的名字5private final String DATABASE_FILENAME = "dictionary.db";678private SQLiteDatabase openDatabase()9 {10try11 {12// 获得dictionary.db⽂件的绝对路径13 String databaseFilename = DATABASE_PATH + "/" + DATABASE_FILENAME;14 File dir = new File(DATABASE_PATH);15// 如果/sdcard/dictionary⽬录中存在,创建这个⽬录16if (!dir.exists())17 dir.mkdir();18// 如果在/sdcard/dictionary⽬录中不存在19// dictionary.db⽂件,则从res\raw⽬录中复制这个⽂件到20// SD卡的⽬录(/sdcard/dictionary)21if (!(new File(databaseFilename)).exists())22 {23// 获得封装dictionary.db⽂件的InputStream对象24 InputStream is = getResources().openRawResource(25 R.raw.dictionary);26 FileOutputStream fos = new FileOutputStream(databaseFilename);27byte[] buffer = new byte[8192];28int count = 0;29// 开始复制dictionary.db⽂件30while ((count = is.read(buffer)) > 0)31 {32 fos.write(buffer, 0, count);33 }34//关闭⽂件流35 fos.close();36 is.close();37 }38// 打开/sdcard/dictionary⽬录中的dictionary.db⽂件39 SQLiteDatabase database = SQLiteDatabase.openOrCreateDatabase(40 databaseFilename, null);41return database;42 }43catch (Exception e)44 {45 }46//如果打开出错,则返回null47return null;48 }。
sqlite使用说明
Sqlite使用说明一、简介:SQLite是目前最流行的开源嵌入式数据库,和很多其他嵌入式存储引擎相比(NoSQL),如BerkeleyDB、MemBASE等,SQLite可以很好的支持关系型数据库所具备的一些基本特征,如标准SQL语法、事务、数据表和索引等。
事实上,尽管SQLite拥有诸多关系型数据库的基本特征,然而由于应用场景的不同,它们之间并没有更多的可比性。
下面我们将列举一下SQLite的主要特征:1. 管理简单,甚至可以认为无需管理。
2. 操作方便,SQLite生成的数据库文件可以在各个平台无缝移植。
3. 可以非常方便的以多种形式嵌入到其他应用程序中,如静态库、动态库等。
4. 易于维护。
综上所述,SQLite的主要优势在于灵巧、快速和可靠性高。
SQLite的设计者们为了达到这一目标,在功能上作出了很多关键性的取舍,与此同时,也失去了一些对RDBMS关键性功能的支持,如高并发、细粒度访问控制(如行级锁)、丰富的内置函数、存储过程和复杂的SQL 语句等。
正是因为这些功能的牺牲才换来了简单,而简单又换来了高效性和高可靠性。
二、SQLite的主要优点:1. 一致性的文件格式:在SQLite的官方文档中是这样解释的,我们不要将SQLite与Oracle或PostgreSQL去比较,而是应该将它看做fopen和fwrite。
与我们自定义格式的数据文件相比,SQLite不仅提供了很好的移植性,如大端小端、32/64位等平台相关问题,而且还提供了数据访问的高效性,如基于某些信息建立索引,从而提高访问或排序该类数据的性能,SQLite提供的事务功能,也是在操作普通文件时无法有效保证的。
2. 在嵌入式或移动设备上的应用:由于SQLite在运行时占用的资源较少,而且无需任何管理开销,因此对于PDA、智能手机等移动设备来说,SQLite的优势毋庸置疑。
3. 内部数据库:在有些应用场景中,我们需要为插入到数据库服务器中的数据进行数据过滤或数据清理,以保证最终插入到数据库服务器中的数据有效性。
SQLite数据库_计算机软件及应用_IT计算机_专业资料
Android SQLite数据库增删改查操作的使用详解一、使用嵌入式关系型SQLite数据库存储数据在Android平台上,集成了一个嵌入式关系型数据库——SQLite,SQLite3支持NULL、INTEGER、REAL(浮点数字)、TEXT(字符串文本)和BLOB(二进制对象)数据类型,虽然它支持的类型只有五种,但实际上sqlite3也接受varchar(n)、char(n)、decimal(p,s) 等数据类型,只不过在运算或保存时会转成对应的五种数据类型。
SQLite最大的特点是你可以把各种类型的数据保存到任何字段中,而不用关心字段声明的数据类型是什么。
例如:可以在Integer类型的字段中存放字符串,或者在布尔型字段中存放浮点数,或者在字符型字段中存放日期型值。
但有一种情况例外:定义为I NTEGER PRIMARY KEY的字段只能存储64位整数,当向这种字段保存除整数以外的数据时,将会产生错误。
另外,在编写CREATE TABLE 语句时,你可以省略跟在字段名称后面的数据类型信息,如下面语句你可以省略name字段的类型信息:CREATE TABLE person (personid integer primary key autoincrement, name varchar(20)) SQLite可以解析大部分标准SQL语句,如:代码如下:创建数据库有两种方式:1.使用SQLiteDatabase的静态方法创建或打开数据库->static SQLiteDatabase openDatabase(Stringpath,SQLiteDatabase.CursorFactory factory,int flag): 打开path文件所代表的SQLite数据库。
->static SQLiteDatabase openOrCreateDatabase(File file,SQLiteDatabase.CursorFactory factory): 打开或创建(如果不存在)file文件所代表的SQLite数据库。
SQLite的介绍操作Sqlite具体实例
SQLite的介绍操作Sqlite具体实例1.SQLite简介SQLite是⼀款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计⽬标是嵌⼊式的,⽽且⽬前已经在很多嵌⼊式产品中使⽤了它,它占⽤资源⾮常的低,在嵌⼊式设备中,可能只需要⼏百K的内存就够了。
它能够⽀持 Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语⾔相结合,⽐如Tcl、PHP、Java、C++、.Net等,还有ODBC接⼝,同样⽐起 Mysql、PostgreSQL这两款开源世界著名的数据库管理系统来讲,它的处理速度⽐他们都快。
2.SQLite的特点:轻量级SQLite和C/S模式的数据库软件不同,它是进程内的数据库引擎,因此不存在数据库的客户端和服务器。
使⽤SQLite⼀般只需要带上它的⼀个动态库,就可以享受它的全部功能。
⽽且那个动态库的尺⼨也挺⼩,以版本3.6.11为例,Windows下487KB、Linux下347KB。
不需要"安装"SQLite的核⼼引擎本⾝不依赖第三⽅的软件,使⽤它也不需要"安装"。
有点类似那种绿⾊软件。
单⼀⽂件数据库中所有的信息(⽐如表、视图等)都包含在⼀个⽂件内。
这个⽂件可以⾃由复制到其它⽬录或其它机器上。
跨平台/可移植性除了主流操作系统 windows,linux之后,SQLite还⽀持其它⼀些不常⽤的操作系统。
弱类型的字段同⼀列中的数据可以是不同类型开源3.SQLite数据类型⼀般数据采⽤的固定的静态数据类型,⽽SQLite采⽤的是动态数据类型,会根据存⼊值⾃动判断。
SQLite具有以下五种常⽤的数据类型:NULL: 这个值为空值VARCHAR(n):长度不固定且其最⼤长度为 n 的字串,n不能超过 4000。
CHAR(n):长度固定为n的字串,n不能超过 254。
INTEGER: 值被标识为整数,依据值的⼤⼩可以依次被存储为1,2,3,4,5,6,7,8.REAL: 所有值都是浮动的数值,被存储为8字节的IEEE浮动标记序号.TEXT: 值为⽂本字符串,使⽤数据库编码存储(TUTF-8, UTF-16BE or UTF-16-LE).BLOB: 值是BLOB数据块,以输⼊的数据格式进⾏存储。
sqlite 用法
sqlite 用法SQLite是一种轻型关系型数据库管理系统,它是一个C语言库,实现了自给自足、无服务器、零配置、事务性的SQL数据库引擎。
SQLite不需要单独的服务器进程或操作系统支持,这使它成为嵌入式数据库的理想选择,也适用于客户端/服务器的数据库应用程序。
SQLite的文件格式跨平台,可以在不同的操作系统中共享。
SQLite 的应用非常广泛,包括Android、iOS、Windows、Linux等系统中的各种应用程序和网站。
SQLite的使用非常简单,只需要引入SQLite的头文件,然后使用相应的API即可实现数据库的连接、数据的插入、查询、更新和删除等操作。
SQLite的API包含在sqlite3.h头文件中,其中最常用的API包括:sqlite3_open()用于连接数据库,sqlite3_exec()用于执行SQL语句,sqlite3_prepare_v2()用于准备SQL语句,sqlite3_step()用于执行SQL语句的下一步,sqlite3_finalize()用于释放已准备好的SQL语句,sqlite3_close()用于关闭数据库连接等。
在SQLite中,数据存储在表中,每个表由一组列组成。
表的创建可以使用SQL语句CREATE TABLE,格式为:CREATE TABLE 表名 (列1名列1类型, 列2名列2类型, …) 例如:CREATE TABLE user (id INTEGER PRIMARY KEY, name TEXT, age INTEGER)这个语句创建了一个名为“user”的表,包含三列:id、name和age。
其中,id列为主键,类型为INTEGER,name列和age列分别为TEXT和INTEGER类型。
表的数据可以通过INSERT INTO语句进行插入,例如:INSERT INTO user (name, age) VALUES ('Tom', 20) 这个语句向user表中插入了一条记录,name列的值为“Tom”,age列的值为20。
sqlite 指南pdf
sqlite 指南SQLite是一个C库,实现了轻量级的关系型数据库系统。
以下是SQLite的指南:1. 安装:首先需要下载并安装SQLite库。
可以从SQLite官网下载最新版本的SQLite源代码,并按照说明进行编译和安装。
2. 创建数据库:使用sqlite3命令行工具可以创建一个新的数据库文件。
例如,在命令行中输入“sqlite3 mydatabase.db”将创建一个名为“mydatabase.db”的数据库文件。
3. 创建表:在SQLite中,可以使用CREATE TABLE语句创建表。
例如,“CREATE TABLE mytable (id INTEGER PRIMARY KEY, name TEXT, age INTEGER);”将创建一个名为“mytable”的表,包含id、name和age 三个字段。
4. 插入数据:可以使用INSERT INTO语句向表中插入数据。
例如,“INSERT INTO mytable (name, age) VALUES ('John', 25);”将在“mytable”表中插入一条记录,包含name和age两个字段的值。
5. 查询数据:可以使用SELECT语句查询表中的数据。
例如,“SELECT * FROM mytable WHERE age > 20;”将查询“mytable”表中年龄大于20的所有记录。
6. 更新数据:可以使用UPDATE语句更新表中的数据。
例如,“UPDATE mytable SET age = 30 WHERE name = 'John';”将更新“mytable”表中name字段为“John”的记录的age字段为30。
7. 删除数据:可以使用DELETE语句删除表中的数据。
例如,“DELETE FROM mytable WHERE name = 'John';”将删除“mytable”表中name字段为“John”的所有记录。
sqllite使用说明
sqllite使用说明SQLite是一种轻量级的关系型数据库管理系统,它被广泛应用于移动设备、嵌入式系统以及小型应用程序中。
下面我将从安装、创建数据库、创建表、插入数据、查询数据和更新数据等方面为你介绍SQLite的使用说明。
首先,要使用SQLite,你需要安装SQLite的数据库引擎。
SQLite数据库引擎是一个独立的C库,可以通过官方网站或者其他渠道下载安装。
安装完成后,你就可以开始创建和管理SQLite数据库了。
接下来是创建数据库。
你可以使用命令行工具或者SQLite的客户端应用程序来创建数据库。
在命令行中,你可以通过输入命令"sqlite3 yourdatabasename.db"来创建一个名为yourdatabasename.db的数据库文件。
在客户端应用程序中,一般会有相应的界面操作来创建数据库。
创建数据库后,你可以开始创建表。
使用SQL语句来创建表,例如,"CREATE TABLE tablename (column1 datatype, column2 datatype, column3 datatype, ...);"。
这样就可以创建一个名为tablename的表,并定义了列名和数据类型。
接着是插入数据。
使用SQL语句"INSERT INTO tablename (column1, column2, column3, ...) VALUES (value1, value2, value3, ...);"来向表中插入数据。
这样就可以将指定的数值插入到对应的列中。
然后是查询数据。
使用SQL语句"SELECT column1,column2, ... FROM tablename WHERE condition;"来查询数据。
这样就可以从表中检索出符合条件的数据,并返回指定的列。
最后是更新数据。
使用SQL语句"UPDATE tablename SET column1 = value1, column2 = value2 WHERE condition;"来更新数据。
sqlite 基本操作
sqlite 基本操作SQLite是一种轻量级的关系型数据库管理系统,它提供了一套简单易用的操作接口,使得开发者可以方便地进行数据库的创建、查询、更新和删除等基本操作。
本文将介绍SQLite的基本操作,包括数据库的创建与连接、表的创建与删除、数据的插入与查询、数据的更新与删除等内容。
一、数据库的创建与连接1. 创建数据库:使用SQLite提供的命令或者API,可以创建一个新的数据库文件。
可以指定数据库文件的路径和名称,也可以使用默认的名称。
2. 连接数据库:连接数据库是指在应用程序中与数据库建立起通信的通道。
通过连接数据库,可以执行后续的操作,包括创建表、插入数据、查询数据等。
二、表的创建与删除1. 创建表:在数据库中,表是用于存储数据的结构化对象。
通过使用SQLite提供的命令或者API,可以创建一个新的表。
在创建表时,需要指定表的名称和表的字段,以及每个字段的类型和约束。
2. 删除表:当不再需要某个表时,可以使用SQLite提供的命令或者API,将其从数据库中删除。
删除表的操作将会删除表中的所有数据,因此在执行删除操作前应慎重考虑。
三、数据的插入与查询1. 插入数据:在已创建的表中,可以通过使用SQLite提供的命令或者API,向表中插入新的数据。
插入数据时,需要指定数据要插入的表和字段,以及每个字段对应的值。
2. 查询数据:查询数据是使用SQLite最常见的操作之一。
通过使用SQLite提供的命令或者API,可以从表中检索出满足特定条件的数据。
查询操作可以使用各种条件和操作符,以及排序和分组等功能。
四、数据的更新与删除1. 更新数据:在已有的表中,可以使用SQLite提供的命令或者API,更新表中的数据。
更新数据时,需要指定要更新的表和字段,以及每个字段对应的新值。
可以使用各种条件和操作符,以确定要更新的数据行。
2. 删除数据:删除数据是使用SQLite的另一个常见操作。
通过使用SQLite提供的命令或者API,可以从表中删除满足特定条件的数据。
Sqlite使用简单教程
Sqlite使⽤简单教程⼀、 SQLite简介SQLite是遵守ACID的关联式数据库管理系统,它包含在⼀个相对⼩的C库中。
它是D.RichardHipp建⽴的公有领域项⽬。
不像常见的客户-服务器范例,SQLite引擎不是个程序与之通信的独⽴进程,⽽是连接到程序中成为它的⼀个主要部分。
所以主要的通信协议是在编程语⾔内的直接API调⽤。
这在消耗总量、延迟时间和整体简单性上有积极的作⽤。
整个数据库(定义、表、索引和数据本⾝)都在宿主主机上存储在⼀个单⼀的⽂件中。
它的简单的设计是通过在开始⼀个事务的时候锁定整个数据⽂件⽽完成的。
这个介绍就不说了,反正它就是个⼩型的SQL数据库,有点类似于ACCESS。
先来试试它的功能吧。
⼆、创建sqlite数据库1、创建空的sqlite数据库。
//数据库名的后缀你可以直接指定,甚⾄没有后缀都可以//⽅法⼀:创建⼀个空sqlite数据库,⽤IO的⽅式FileStream fs = File.Create(“c:\\test.db“);//⽅法⼆:⽤SQLiteConnectionSQLiteConnection.CreateFile(“c:\\test.db“);创建的数据库是个0字节的⽂件。
2、创建加密的空sqlite数据库//创建⼀个密码为password的空的sqlite数据库SQLiteConnection.CreateFile(“c:\\test2.db“);SQLiteConnection cnn = new SQLiteConnection(“Data Source=c:\\test2.db“);SQLiteConnection cnn = new SQLiteConnection(“Data Source=D:\\test2.db“);cnn.Open();cnn.ChangePassword(“password“);3、给未加密的数据库加密SQLiteConnection cnn = new SQLiteConnection(“Data Source=c:\\test.db“);cnn.Open();cnn.ChangePassword(“password“);4、打开加密sqlite数据库//⽅法⼀SQLiteConnection cnn = new SQLiteConnection(“Data Source=c:\\test2.db“);cnn.SetPassword(“password“);cnn.Open();//⽅法⼆SQLiteConnectionStringBuilder builder = new SQLiteConnectionStringBuilder();builder.DataSource = @”c:\test.db“;builder.Password = @”password“;SQLiteConnection cnn = new SQLiteConnection(builder.ConnectionString);cnn .Open();分页select * from messages limit 10,100;表⽰跳过10⾏,取100⾏的返回结果。
关于android studio sqlite数据库实验总结
关于android studio sqlite数据库实验总结作为一个Android Studio的SQLite数据库实验,以下是一些总结:1. 安装SQLite驱动程序:要在Android Studio中使用SQLite,需要安装SQLite驱动程序。
可以使用Android SDK中的工具包安装,具体步骤可以参考SQLite官方文档。
2. 创建SQLite数据库:在Android Studio中创建一个SQLite 数据库,可以在Project--> Database中创建。
在创建数据库时,需要提供一个数据库名称和密码,并设置数据库连接的用户名和密码。
3. 连接SQLite数据库:可以使用Android Studio提供的SQLite 连接工具,在Project--> Database中选择创建的SQLite数据库,然后选择连接工具。
连接时需要提供数据库名称和密码,以及连接服务器的地址和端口号。
4. 创建和保存数据库表:在Android Studio中创建和保存数据库表可以使用SQL语句。
可以使用SQLite的CREATE TABLE语句来创建表,也可以使用INSERT、SELECT等语句来创建、更新和删除表的数据。
5. 操作数据库表:在Android Studio中可以通过SQL语句和Android API来操作数据库表。
可以使用Android Studio提供的SQLite API来执行SELECT、INSERT、UPDATE、DELETE等SQL操作,也可以使用Java API来执行这些操作。
6. 保存和备份数据库:在完成数据库操作后,需要保存和备份数据库。
可以使用Android Studio提供的SQLite连接工具来保存数据库,也可以使用其他工具来备份数据库。
7. 调试数据库操作:在Android Studio中可以通过SQLite连接工具和Android API来调试数据库操作。
SQLite的安装及使用
SQLite的安装及使⽤SQLite的安装及使⽤什么是 SQLite?SQLite是⼀个进程内的库,实现了⾃给⾃⾜的、⽆服务器的、零配置的、事务性的 SQL 数据库引擎。
它是⼀个零配置的数据库,这意味着与其他数据库不⼀样,您不需要在系统中配置。
就像其他数据库,SQLite 引擎不是⼀个独⽴的进程,可以按应⽤程序需求进⾏静态或动态连接。
SQLite 直接访问其存储⽂件。
为什么要⽤ SQLite?不需要⼀个单独的服务器进程或操作的系统(⽆服务器的)。
SQLite 不需要配置,这意味着不需要安装或管理。
⼀个完整的 SQLite 数据库是存储在⼀个单⼀的跨平台的磁盘⽂件。
SQLite 是⾮常⼩的,是轻量级的,完全配置时⼩于 400KiB,省略可选功能配置时⼩于250KiB。
SQLite 是⾃给⾃⾜的,这意味着不需要任何外部的依赖。
SQLite 事务是完全兼容 ACID 的,允许从多个进程或线程安全访问。
SQLite ⽀持 SQL92(SQL2)标准的⼤多数查询语⾔的功能。
SQLite 使⽤ ANSI-C 编写的,并提供了简单和易于使⽤的 API。
SQLite 可在 UNIX(Linux, Mac OS-X, Android, iOS)和 Windows(Win32, WinCE, WinRT)中运⾏。
SQLite的使⽤这⾥我的电脑是 windows 64位操作系统,请下载相对应⾃已电脑配置的数据库。
2、下载完成后,解压出来3、配置PATH环境变量4、按下Wondows + R,输⼊cmd 输⼊sqlite35、出现如下说明sqliet3数据库已经可以正常使⽤了6、创建数据库:.open F:\demo1.db7、打开F盘就可以看到刚刚新建的数据库啦8、新建表、插⼊数据、查询数据9、输⼊.exit退出sqlite,打开连接试⼀下连接名:可⾃定义数据库⽂件:选中创建好的数据库⽂件10、查看表数据到这⾥,就完成了对SQLite的安装、操作及连接。
列出sqlite数据库的管理命令和使用格式
一、sqlite数据库管理命令1.1 创建数据库创建一个新的SQLite数据库可以使用如下命令:```sqlite3 database_name.db```1.2 查看数据库列表使用如下命令可以查看当前系统中存在的数据库列表:```sqlite3 .databases```1.3 打开已有数据库使用如下命令可以打开一个已经存在的数据库文件:```sqlite3 database_name.db```1.4 查看数据库表格```sqlite3> .tables```1.5 查看表格结构```sqlite3> .schema table_name```1.6 退出sqlite命令行```sqlite3> .quit```1.7 管理sqlite数据库使用如下命令可以对SQLite数据库进行管理操作,如备份、恢复等功能:```sqlite3.exesqlite> .backup m本人n backup.dbsqlite> .restore m本人n backup.db```二、SQLite数据库使用格式2.1 启动SQLite数据库要启动SQLite数据库,需要打开终端并使用sqlite3命令,然后在sqlite命令行中执行相应的操作。
2.2 创建表格在SQLite命令行中可以使用CREATE TABLE语句来创建新的表格,语法格式如下:```CREATE TABLE table_name (column1 datatype,column2 datatype,...);```2.3 插入数据通过使用INSERT INTO语句可以向表格中插入数据,语法格式如下:```INSERT INTO table_name (column1, column2, column3, ...) VALUES (value1, value2, value3, ...);```2.4 查询数据使用SELECT语句可以从表格中查询数据,语法格式如下:```SELECT column1, column2, ...FROM table_nameWHERE condition;```2.5 更新数据通过使用UPDATE语句可以更新表格中的数据,语法格式如下:```UPDATE table_nameSET column1 = value1, column2 = value2, ...WHERE condition;```2.6 删除数据通过使用DELETE FROM语句可以删除表格中的数据,语法格式如下:```DELETE FROM table_nameWHERE condition;```2.7 关闭数据库在使用完SQLite数据库后,可以使用如下命令来关闭数据库:```sqlite3> .exit```以上就是关于SQLite数据库的管理命令和使用格式的内容,希望对读者有所帮助。
sqlite数据库操作语句
sqlite数据库操作语句SQLite是一种轻量级的关系型数据库管理系统,它被广泛应用于嵌入式系统、移动设备和小型应用程序中。
在本文中,我们将一步一步地回答有关SQLite数据库的操作语句。
第一步:安装SQLite数据库在使用SQLite之前,我们需要先安装它。
SQLite是一个自包含的库,可以通过其官方网站(第二步:连接到数据库连接到SQLite数据库只需使用`sqlite3`命令即可。
在命令行终端中输入`sqlite3`,然后紧接着输入数据库的名称(如果不存在,则会自动创建)。
例如,要连接到名为`mydatabase.db`的数据库,你需要输入以下命令:sqlite3 mydatabase.db成功执行后,你将看到SQLite的命令行提示符。
第三步:创建表在SQLite中,我们使用`CREATE TABLE`语句来创建一张新表。
以下是一个创建名为`users`的表的示例:sqlCREATE TABLE users (id INTEGER PRIMARY KEY,name TEXT NOT NULL,age INTEGER);在上面的示例中,我们定义了三个列:`id`(主键)、`name`(文本类型,不允许为空)和`age`(整数类型)。
主键是用来唯一标识每行数据的列。
第四步:插入数据一旦我们有了表,我们就可以使用`INSERT INTO`语句向表中插入数据。
以下是一个向`users`表中插入新行的示例:sqlINSERT INTO users (name, age) VALUES ('Alice', 25);INSERT INTO users (name, age) VALUES ('Bob', 30);在上面的示例中,我们指定了要插入数据的列(`name`和`age`),并提供了相应的值。
通过多次执行`INSERT INTO`语句,我们可以向表中插入多行数据。
SQLITE的基本使用说明
sqlite数据库索引使用方法
sqlite数据库索引使用方法SQLite是一种轻量级的嵌入式数据库管理系统,被广泛应用于移动设备和嵌入式系统中。
在处理大量数据时,为了提高查询效率,我们可以使用索引来加速数据库的查询操作。
本文将介绍SQLite数据库索引的使用方法。
一、索引的概念和作用索引是一种数据结构,用于加速数据库中的数据查找。
它类似于书籍的目录,可以根据关键字快速定位到书籍的具体内容。
在SQLite 中,索引可以大大提高查询的效率,减少查询所需的时间。
二、索引的创建在SQLite中,我们可以使用CREATE INDEX语句来创建索引。
创建索引时,需要指定要创建索引的表名、索引名以及要创建索引的列名。
例如,以下语句将在表中创建一个名为"index_name"的索引,该索引基于"column_name"列:CREATE INDEX index_name ON table_name (column_name);三、索引的类型SQLite支持多种类型的索引,包括B树索引、Hash索引和全文索引等。
其中,B树索引是SQLite默认的索引类型,也是最常用的索引类型。
它可以实现快速的范围查询和排序操作。
Hash索引适用于等值查询,但不支持范围查询。
全文索引可以用于文本搜索,但在SQLite中需要额外的配置和扩展。
四、索引的选择在选择创建索引时,需要考虑查询的频率和效率。
一般来说,对于经常被查询的列,应该创建索引以提高查询效率。
但是,过多的索引也会增加数据库的存储空间和维护成本,因此需要权衡利弊。
五、索引的优化为了使索引的使用更加高效,我们可以采取一些优化策略。
首先,可以使用复合索引来覆盖多个列,以减少索引的数量。
其次,可以使用合适的数据类型和字段长度,以减小索引的大小。
此外,还可以定期重新构建和优化索引,以保持索引的性能。
六、索引的注意事项在使用索引时,需要注意以下几点。
首先,索引只能加快查询操作,而对于插入、更新和删除操作,索引可能会导致性能下降。
sqlitedb的使用
sqlitedb的使用SQLite是一种轻量级的关系型数据库管理系统,它以库形式实现,并且没有独立的服务器进程。
SQLite将整个数据库存储在一个文件中,适合于嵌入式设备和小型应用程序。
下面将介绍SQLite的使用。
1. SQLite的安装和配置:-下载SQLite的二进制文件,并将其解压到合适的位置。
-设置系统环境变量,将SQLite的可执行文件所在路径添加到系统的PATH变量中。
2.创建和连接到数据库:-在终端或命令提示符中执行sqlite3命令,可以创建一个空的数据库或连接到已存在的数据库文件。
-指定数据库文件的路径,例如`sqlite3 test.db`,这将创建一个名为test.db的数据库文件。
-输入`.databases`命令可以查看当前连接的数据库。
3.创建表:-使用`CREATE TABLE`语句可以创建表,例如`CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT, age INTEGER)`。
-这个示例创建了一个名为users的表,包含id、name和age三个列。
-列的数据类型可以是INTEGER、REAL、TEXT、BLOB等。
PRIMARY KEY表示此列为主键。
4.插入数据:-使用`INSERT INTO`语句插入数据,例如`INSERT INTO users (name, age) VALUES ('John', 25)`。
-这个示例插入了一条数据,name列的值为'John',age列的值为25。
-可以插入多条数据,每条数据用逗号隔开。
5.查询数据:-使用`SELECT`语句进行查询,例如`SELECT * FROM users`,将返回users表中的所有数据。
-可以添加条件进行过滤,例如`SELECT * FROM users WHEREage > 30`,返回age大于30的数据。
sqlite数据库linux系统使用方法
SQLite数据库Linux系统使用方法1. 介绍SQLite是一款轻量级的嵌入式关系型数据库管理系统,适用于各种应用场景。
在Linux系统上使用SQLite,可以轻松地进行数据库的创建、管理和查询。
本文将详细介绍SQLite数据库在Linux系统上的使用方法,包括安装、基本操作、高级功能等方面的内容。
2. 安装SQLite在大多数Linux发行版中,安装SQLite通常是非常简单的。
可以使用系统自带的包管理工具进行安装,例如在Ubuntu系统上可以使用以下命令:bashsudo apt-get updatesudo apt-get install sqlite3这将安装SQLite的命令行工具,并在系统中创建相应的可执行文件。
3. 启动SQLite Shell安装完成后,可以通过命令行启动SQLite Shell,进入SQLite 的交互式环境。
在终端中输入以下命令:bashsqlite3这将进入SQLite Shell,并显示SQLite的版本信息。
接下来,可以在Shell中输入SQL语句进行数据库操作。
4. 创建数据库在SQLite中,一个文件就是一个数据库,因此创建数据库非常简单。
可以使用如下命令创建一个名为`example.db`的数据库:bashsqlite3 example.db这将在当前目录下创建一个SQLite数据库文件,如果文件已存在则打开该文件。
5. 数据表操作在SQLite中,数据表是用于存储数据的基本结构。
可以使用SQL 语句创建数据表、插入数据、查询数据等。
例如,创建一个名为`users`的数据表:sqlCREATE TABLE users (id INTEGER PRIMARY KEY,username TEXT NOT NULL,email TEXT NOT NULL UNIQUE);上述SQL语句创建了一个包含`id`、`username`和`email`字段的`users`表。
SQLite数据库简介和使用
SQLite数据库简介和使⽤⼀、Sqlite简介: SQLite (/),是⼀款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计⽬标是嵌⼊式的,⽽且⽬前已经在很多嵌⼊式产品中使⽤了它,它占⽤资源⾮常的低,在嵌⼊式设备中,可能只需要⼏百K的内存就够了。
它能够⽀持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语⾔相结合,⽐如 Tcl、C#、PHP、Java等,还有ODBC接⼝,同样⽐起Mysql、PostgreSQL这两款开源世界著名的数据库管理系统来讲,它的处理速度⽐他们都快。
SQLite第⼀个Alpha版本诞⽣于2000年5⽉.⾄今已经有10个年头,SQLite也迎来了⼀个版本 SQLite 3已经发布。
⼆、Sqlite作者赠⾔: o May you do good and not evil. 愿你⾏善莫⾏恶 o May you find forgiveness for yourself and forgive others. 愿你原谅⾃⼰宽恕他⼈ o May you share freely, never taking more than you give. 愿你宽⼼与⼈分享,所取不多于你所施予三、Sqlite的命令: sqlite3 too.db 创建名为too的数据库,其后缀不⼀定⽤db .Help 求助 .quit 离开四、Sqlite的客户端⼯具: SQLiteExpertPers六、Sqlite的sql语句:建表:create table table_name(field1, field2, field3, ...); 例⼦:创建名为film的数据库表 create table film(_id Integer primaray key autoincrement , title, length, year, starring);注意:语句要以分号结尾,字段不⽤指定类型,它会适时的⾃动转换 可以存储⽂字、数字、⼤⽂本(blub)创建索引:create index index_name on table_name(field_to_be_indexed); 例⼦:针对表film的title字段创建名为film_title_index的索引 create index film_title_index on film(title); 注意:当表的数据较多时,索引能加快查询速度(前提是根据建有索引的字段查询)添加数据:insert into table_name(field1,field2,field3,...) values(data1, data2, data3, ...); 例⼦:向表film中添加⼀条记录 insert into film(title, length, year, starring) values('Contact',153,1997,'Jodie Foster'); 注意:可以省略语句中的字段名部分,前提是数据个数与字段个数⼀样 如果某个字段没有添加值则其值为null,也可⼿动添加null值查询数据:select columns from table_name where expression; 例⼦:从表film中查询数据 1 显⽰表⾥所有字段的所有数据 select * from film; 2 如果资料太多了,我们或许会想限制笔数: select * from film limit 10; 3 照着电影年份来排列: select * from film order by year limit 10; 4 年份⽐较近的电影先列出来: select * from film order by year desc limit 10; 5 我们只想看电影名称跟年份: select title, year from film order by year desc limit 10; 6 查所有茱蒂佛斯特演过的电影: select * from film where starring='Jodie Foster'; 7 查所有演员名字开头叫茱蒂的电影('%' 符号便是 SQL 的万⽤字符): select * from film where starring like 'Jodie%'; 8 查所有演员名字以茱蒂开头、年份晚于1985年、年份晚的优先列出、最多⼗笔,只列出电影名称和年份: select title, year from film where starring like 'Jodie%' and year >= 1985 order by year desc limit 10; 9 查看数据库⼀共有多少条记录: select count(*) from film; 10 查看1985年以后的电影有⼏部: select count(*) from film where year >= 1985;更新数据:update film set starring='Jodie Foster' where starring='Jodee Foster'; 把主⾓字段为'Jodee Foster'的所有记录改成Jodie Foster。
SQLite的使用--SQLite语句
SQLite的使⽤--SQLite语句⼀.SQLite的介绍1.为什么要存储数据?1.1 ⼿机数据⼤多都是从⽹络加载的,不存储,每次滚动界⾯都要从新发送⽹络请求加载数据,浪费流量 1.2 当⽤户没⽹的时候,就不能正常显⽰界⾯了1.3 将数据存储到本地,不⽤每次加载,没⽹的时候也可从本地存储的数据拿来显⽰2.存储数据的⽅式Plist(NSArray\NSDictionary)特点: 只能存储系统⾃带的数据类型, ⽐如NSDictory, NSArray等等. ⾃定义的对象⽆法存储Preference(偏好设置\NSUserDefaults)特点: 本质就是⼀个plist⽂件; 也是只能存储系统⾃带的数据类型, ⾃定义的对象⽆法存储NSCoding(NSKeyedArchiver\NSkeyedUnarchiver)特点: 可以存储⾃⼰定义的数据类型, 但是都是⼀次性的全数据操作SQLite3特点: 存储⼀些⼤批量的数据, 排序, 统计等操作Core Data特点: 对SQLite3的⼀层⾯向对象的包装, 本质还是要转换成为对应的SQL语句去执⾏在所有的存储⽅式中,SQLite速度最快,效率最⾼.3.什么是SQLite?SQLite是⼀款轻型的嵌⼊式关系数据库它占⽤资源⾮常的低,在嵌⼊式设备中,可能只需要⼏百K的内存就够了⽬前⼴泛应⽤于移动设备中存储数据(Android/iOS)处理数据的速度⾮常快,效率⾮常⾼4.什么是数据库?数据库(Database)是按照数据结构来组织、存储和管理数据的仓库(类似于excel表格)数据库可以分为2⼤种类(了解)关系型数据库(主流)对象型数据库5.关系型数据库介绍⼆.Navicat软件的破解1.什么是Navicat?Navicat是数据库管理软件,⽀持⼤部分主流数据库(包括SQLite)(收费,要破解)可以通过图形化界⾯的⽅式来管理数据库2.有破解版,可以去⽹上搜索下载,⾃⼰安装,这⾥不做介绍三.Navicat软件的使⽤1.创建SQLite数据库2.创建表2.1 双击打开数据库,在tables中点击右键,选中NewTable2.2 创建表中对应的字段,点击”+”添加字段2.3 保存,要设置表格名称. 名称规范: t_名称如: t_student3.设置主键,添加数据3.1 什么是主键主键就相当于⾝份证⼀样,⽤来区分每⼀条数据3.2 设置主键注意点3.3 添加,删除,修改数据3.31 直接点击”+” 添加数据注意:主键的值不要修改3.32 删除,选中⼀⾏,点击”-“ 直接删除注意:删除⼀组数据后,主键值就不会再被回收使⽤. ⼀个主键值只对应⼀条数据,⽆论数据是否存在 3.33 修改数据双击想要修改的数据,直接修改四.SQLite的使⽤步骤1.创建数据库(⼀个⽤于存储数据的⽂件)通常后缀名为: .db 或 .sqlite2.创建表⽤于存储数据创建表时需要指定该表有哪些字段⽐如学⽣表有:学号/姓名/年龄/⾝⾼等3.对表进⾏增删改查操作⽐如添加⼀条学⽣数据:型号:1/姓名:why/年龄:18/⾝⾼:1.88五.SQL简介1.怎么在程序中使⽤SQLite?真实使⽤SQLite时⽤代码来操作的2.怎么⽤代码操作SQLite?使⽤SQL语句来操作3.SQL介绍不做过多介绍,直接看下定义就⾏了六.在代码中使⽤DDL(数据定义语句)1.先导⼊libsqlite3.tba框架(c语⾔)2.创建桥接⽂件,配置桥接⽂件(不会的话,看之前笔记)3.创建数据库// 创建数据库// ⽂件路径 :// 1.获取数据库的存放路径(沙盒中)let filePath = "/Users/xiaomage/Desktop/123.sqlite"let cString = filePath.cStringUsingEncoding(NSUTF8StringEncoding)!// 2.定义数据库对象(后⾯还要⽤,定义⼀个属性替代)// var db : COpaquePointer = nil// 3.打开/创建数据库对象if sqlite3_open(cString, &db) == SQLITE_OK {print("创建/打开数据库成功")} else {print("失败")}}4.创建表4.1 创建SQL语句4.2 执⾏语句(要对语句进⾏判断) if 语句 == SQLITE_OK 4.3 创建表格式CREATE TABLE IF NOT EXISTS '表名' ('字段名' 类型(INTEGER, REAL, TEXT, BLOB)NOT NULL 不允许为空PRIMARY KEY 主键AUTOINCREMENT ⾃增长,'字段名2' 类型,...)4.4 语句说明CREATE TABLE:创建⼀张表IF NOT EXISTS:不存在则创建't_student':表的名称NOT NULL:不允许为空PRIMARY KEY:主键AUTOINCREMENT:⾃动增加'id' INTEGER:有⼀个ID字段,类型是INTEGER5.删除表5.1删除表的格式DROP TABLE IF EXISTS '表名';5.2 语句说明DROP TABLE:删除表IF EXISTS:存在则删除'表名':要删除的表的名称1// 1.获取要执⾏的SQL语句2 let createTableSQL = "DROP TABLE IF EXISTS t_student;"34// 2.执⾏语句5if sqlite3_exec(db, createTableSQL.cStringUsingEncoding(NSUTF8StringEncoding)!, nil, nil, nil) == SQLITE_OK {6 print("删除表成功")7 } else {8 print("删除表失败")9 }10 }6.封装SQL语句6.1 创建/打开数据库的代码全部⼀样,可以封装起来6.2 创建语句,执⾏语句步骤都⼀样,只有语句的内容不⼀样,可以把语句当做参数,封装起来6.3 封装⼯具类,最好把实例对象设计为单例class SQLiteManager {// 设计单例对象static let shareInstance : SQLiteManager = SQLiteManager()// 数据库对象var db : COpaquePointer = nil}// MARK:- 打开数据库的操作extension SQLiteManager {func openDB(filePath : String) -> Bool {// 1.将Swift字符串转成C语⾔的字符串let cString = filePath.cStringUsingEncoding(NSUTF8StringEncoding)!// 3.打开/创建数据库对象return sqlite3_open(cString, &db) == SQLITE_OK}}// MARK:- 执⾏SQL语句extension SQLiteManager {func execSQL(sqlString : String) -> Bool {// 1.将Swift字符串转成C语⾔的字符串let cSQLString = sqlString.cStringUsingEncoding(NSUTF8StringEncoding)!// 2.执⾏语句return sqlite3_exec(db, cSQLString, nil, nil, nil) == SQLITE_OK}}七.在代码中使⽤DML(数据操作语句)1.插⼊数据1.1 插⼊数据格式INSERT INTO 't_student' (name, age, height) VALUES ('why', 18, 1.88);1.2 语句说明INSERT INTO: 插⼊数据't_student': 在哪⼀个表中插⼊数据(数据的字段): 给哪些字段插⼊数据VALUES ('why', 18, 1.88): 插⼊的具体值// 1.插⼊数据(获取插⼊语句)let insertSQL = "INSERT INTO t_student (name, age, height) VALUES ('why', 18, 1.88);" // 2.执⾏语句SQLiteManager.shareInstance.execSQL(insertSQL)2.更新数据1.1 更新数据格式UPDATE 't_student' SET 字段 = '值' WHERE 条件判断;1.2 语句说明UPDATE: 跟新数据't_student': 在哪⼀个表中更新数据SET 字段 = '值': 更新怎样的数据WHERE 条件判断: 更新哪些数据// 1.获取更新语句let updateSQL = "UPDATE t_student SET name = 'yz';"// 2.执⾏语句SQLiteManager.shareInstance.execSQL(updateSQL)3.删除数据3.1 删除数据格式DELETE FROM t_student;DELETE FROM t_student WHERE age < 50;3.2 语句说明DELETE FROM: 从表中删除数据t_student : 表名可以跟条件也可以不跟:不跟表⽰删除所有的数据// 1.获取删除语句let deleteSQL = "DELETE FROM t_student;"// 2.执⾏语句SQLiteManager.shareInstance.execSQL(deleteSQL)4.真实开发如何插⼊数据4.1 真实开发插⼊数据,不可能⼀条⼀条去写4.2 ⼀般来说,我们开发都是⾯向模型的4.3 可以把要插⼊的数据包装成模型4.4 在模型中提供⽅法,快速插⼊数据4.5 遍历模型数组,利⽤模型中快速插⼊数据的⽅法插⼊数据5.怎么把数据包装成模型?遍历数据,把数据的每⼀个字段作为模型的属性保存起来// 模拟从⽹络服务器中请求到很多数据(实际中数据是⽹络来的,这⾥⾃⼰写模拟)for _ in0..<100 {let name = "zs\(arc4random_uniform(100))"let age = Int(10 + arc4random_uniform(10))let height = 1 + Double(arc4random_uniform(10)) / 10.0let stu = Student(name: name, age: age, height: height)stus.append(stu)}模型中代码:1class Student: NSObject {2 var name : String = ""3 var age : Int = 04 var height : Double = 0.056 init(name : String, age : Int, height : Double) {7 = name8 self.age = age9 self.height = height10 }11 }1213 extension Student {14 func insertDB() {15// 1.插⼊数据(获取插⼊语句)16 let insertSQL = "INSERT INTO t_student (name, age, height) VALUES ('\(name)', \(age), \(height));" 17// 2.执⾏语句18 SQLiteManager.shareInstance.execSQL(insertSQL)19 }20 }控制器中快速插⼊for stu in stus { stu.insertDB()}6.插⼊数据的优化6.1 如果有⼤量数据插⼊,在主线程执⾏,会阻塞ui6.2 插⼊⼤量数据怎么优化?6.21 在⼦线程进⾏数据插⼊6.22 ⼿动开启事务如果⼀条条数据进⾏插⼊时,那么每插⼊⼀条数据就会开启⼀次事务.(开启事务耗时)但是如果有明确的开启事务,那么系统就不会在插⼊每条数据时,再开启事务1 dispatch_async(dispatch_get_global_queue(0, 0)) {2//获取插⼊数据开始时间3 let startTime = CACurrentMediaTime()4// 开启事务5 let startSQL = "BEGIN TRANSACTION;"6 SQLiteManager.shareInstance.execSQL(startSQL)78for stu in self.stus {9 stu.insertDB()10 }11//关闭事务12 let commitSQL = "COMMIT TRANSACTION;"13 SQLiteManager.shareInstance.execSQL(commitSQL)14//获取插⼊数据结束时间15 let endTime = CACurrentMediaTime()16//获取插⼊数据耗时17 print(endTime - startTime)18 }19 }⼋.在代码中使⽤DQL(数据查询语句)1.查询语句2.查询数据代码实现步骤2.1 获取查询语句2.2 执⾏查询语句(得到的结果保存到数组中,最好是字典数组)2.3 遍历数组,字典转模型2.4 从模型中读取数据代码实现:1// 1.获取查询语句2 let querySQL = "SELECT * FROM t_student LIMIT 30, 30;";34// 2.执⾏语句 (执⾏语句封装到了⼀个⽅法⾥⾯)5 guard let dictArray = SQLiteManager.shareInstance.querySQL(querySQL) else { 6return7 }89// 3.遍历数组10 var tempArray = [Student]()11for dict in dictArray {12// 字典转模型13 tempArray.append(Student(dict: dict))14 }1516for stu in tempArray {17 print(, stu.age)18 }1920//执⾏语句代码实现21 func querySQL(querySQL : String) -> [[String : NSObject]]? {22// 0.将Swift字符串转成C语⾔字符串23 let cString = querySQL.cStringUsingEncoding(NSUTF8StringEncoding)!2425// 1.定义游标(指针)26 var stmt : COpaquePointer = nil2728// 2.给游标赋值29// 1> 参数⼀: 数据库对象30// 2> 参数⼆: SQL语句31// 3> 参数三: 该SQL语句的长度 -1 --> 系统⾃动计算32// 4> 参数四: 游标的地址33 guard sqlite3_prepare_v2(db, cString, -1, &stmt, nil) == SQLITE_OK else {34return nil35 }3637// 3.取出所有的数据38// 3.1.定义字典数组39 var dictArray = [[String : NSObject]]()4041// 3.2.判断是否有该条数据42while sqlite3_step(stmt) == SQLITE_ROW {43// 3.3.获取字段的个数44 let count = sqlite3_column_count(stmt)45// 3.4.定义字典46 var dict = [String : NSObject]()47// 3.5.遍历每⼀个字典48for i in0..<count {49// 3.6.取出该列的键50 let ckey = sqlite3_column_name(stmt, i)51 guard let key = String(UTF8String : ckey) else {52continue53 }54// 3.7.取出该列的值55 let cvalue = UnsafePointer<Int8>(sqlite3_column_text(stmt, i))56//将c语⾔字符串转成swift字符串57 let value = String(UTF8String : cvalue)5859// 3.8.将键值对放⼊到字典中60 dict[key] = value61 }62// 3.9.将字典放⼊到数组中63 dictArray.append(dict)64 }65return dictArray66 }67 }九.FMDB框架的使⽤1.FMDB框架的作⽤?FMDB是⽤来简化操作数据库的框架2.FDMB的基本使⽤2.1 创建数据库private lazy var db : FMDatabase = FMDatabase(path: "/Users/lgp/Desktop/321.sqlite") // 创建FMDatabase对象// 打开/创建数据if db.open() {print("打开成功")} else {print("失败")}2.2 创建/删除表插⼊/更新/删除数据本质都是⼀样的只有语句的内容不⼀样将语句内容换成对应的操作,就能执⾏该项操作(和SQLite语句⼀样) // 1.获取创建表的语句let createSQL = "INSERT INTO t_person (name, age, height) VALUES ('why', 18, 1.88);" // 2.执⾏语句db.executeUpdate(createSQL, withArgumentsInArray: nil)2.3 查询数据var db : FMDatabase?1 func querySQL(querySQL : String) -> [[String : NSObject]]? {2// 0.判断db是否有值 db定义为属性3 guard let db = db else {4return nil5 }6// 1.执⾏查询语句结果为集合7 let results = db.executeQuery(querySQL, withArgumentsInArray: nil)89// 2.获取数据10// 2.0.定义数据11 var dictArray = [[String : NSObject]]()1213// 2.1.判断结果集中是否有内容14while results.next() {1516 let count = results.columnCount()1718 var dict = [String : NSObject]()1920for i in0..<count {21 let key = results.columnNameForIndex(i)22 let value = results.stringForColumnIndex(i) 2324 dict[key] = value25 }26 dictArray.append(dict)27 }28return dictArray29 }。
sqlite数据库使用方法
sqlite数据库使用方法SQLite 是一个轻量级的嵌入式数据库,与传统的客户端/服务器模式的数据库不同,它是一个库,直接与程序链接,而不是通过网络与一个单独的进程交互。
下面是 SQLite 的使用方法的详细介绍:1. 安装 SQLite2.创建数据库使用 SQLite 前,需要先创建一个数据库文件。
在命令提示符中,可以使用以下命令创建一个新的数据库文件:``````这个命令将创建一个名为 `database.db` 的数据库文件。
如果文件不存在,则会自动创建。
如果文件已经存在,则会打开现有的数据库文件。
3.创建表创建表是存储数据的基本单元。
在 SQLite 中,可以使用 `CREATE TABLE` 命令来创建一个新的表。
以下是一个创建表的示例:```CREATE TABLE studentsid INTEGER PRIMARY KEY,name TEXT,age INTEGER```这个命令将创建一个名为 `students` 的表,包含三个列:`id`、`name` 和 `age`。
`id` 列是一个整数类型的主键,`name` 列是一个文本类型,`age` 列是一个整数类型。
4.插入数据插入数据是把数据添加到数据库表中的过程。
在 SQLite 中,可以使用 `INSERT INTO` 命令来插入数据。
以下是一个插入数据的示例:```INSERT INTO students (name, age) VALUES ('Alice', 20);INSERT INTO students (name, age) VALUES ('Bob', 22);INSERT INTO students (name, age) VALUES ('Charlie', 21);```这个命令将分别插入三条数据到 `students` 表中。
5.查询数据查询数据是从数据库表中获取数据的过程。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验11SQLite数据库的使用一、实验目的1.掌握创建SQLite数据库的方法;2.掌握实现对SQLite数据增删改查的方法;3.学会使用adb调试工具查瞧数据库与数据表;二、知识要点1.创建SQLite数据库的方法:①定义一个帮助类MyHelper继承SQLiteOpentHelper类;②在MyHelper类中定义构造方法,重写onCreate()与onUpgrade()方法;③在onCreate(SQLiteDatabasedb)方法中,通过参数db调用execSQL(String sql)方法执行建表SQL语句;④创建一个MyHelper类对象helper,调用构造方法对其进行初始化,然后由helper对象调用getWritableDatabase()方法或getReadableDatabase()创建数据库。
2.实现SQLite数据增删改查的方法:(1)添加数据:①获取一个SQLiteDatabase对象db;②通过db对象调用以下任一方法实现数据添加:a)execSQL(String sql)方法执行insert SQL语句;如:db、execSQL(“insert into table_name(column_list) values(value_list)”);b)调用insert(表名,null,添加的数据values)方法:首先,定义一个ContentValues对象values,通过values对象调用put()方法将要添加的数据存入values对象,然后再通过db对象调用insert()方法,将values中的数据添加到指定的数据表中。
(2)更新数据:①获取一个SQLiteDatabase对象db;②通过db对象调用以下任一方法实现数据添加:a)execSQL(String sql)方法执行update SQL语句;如:db、execSQL(“update table_name set column=value,… where condition”);b)调用update(String table, ContentValuesvalues,StringwhereClause,String[] whereArgs)方法:首先,定义一个ContentValues对象values,通过values对象调用put()方法将要更新的数据存入values对象,然后再通过db对象调用update()方法,指定要修改数据的表名,更新的数据values,约束更新某一行火某几行中的数据。
(3)删除数据:①获取一个SQLiteDatabase对象db;②通过db对象调用以下任一方法实现数据添加:a)execSQL(String sql)方法执行delete SQL语句;如:db、execSQL(“delete from table_name where condition”);b)调用delete(String table, String whereClause,String[] whereArgs)方法,指定要删除数据的表名称,以及约束删除某一行或某几行中的数据。
(4)查询数据:①获取一个SQLiteDatabase对象db;②通过db对象调用query()方法,指定要查询的表名、列名、以及where约束条件等,并将查询结果存入一个Cursor对象中。
如:Cursor cursor=db、query(表名,列名,where约束条件,为where中的占位符提供具体的,null,null,null);三、实验内容1.创建一个Android项目,项目名称为“shiyan1101_专业_×××(学生姓名)”,要求:(1)自动创建Activity;(2)使用XML编写界面;(3)界面构成:①4个文本框,分别用来显示提示信息“图书名称”、“图书作者”、“图书价格”、“图书页数”;②4个编辑框,分别用来接收用户输入“图书名称”、“图书作者”、“图书价格”、“图书页数”;③5个按钮,文本显示分别为“创建SQLite数据库”、“添加数据”、“修改数据”、“删除数据”、“查询数据”。
(4)程序实现功能:①点击“创建SQLite数据库”按钮,创建一个SQLite数据库BookStore、db,并创建一个数据表Book,通过Toast显示“数据库BookStore、db创建成功!”,要求使用adb查瞧数据库创建就是否成功。
②点击“添加数据”按钮,将用户在编辑框中输入的图书名称、图书作者、图书价格、图书页数等数据写入添加到数据表Book中。
③点击“修改数据”按钮,将数据表Book中指定的数据进行修改,条件根据题目自己设定。
④点击“删除数据”按钮,将数据表Book中指定的数据删除,删除条件根据题目自己设定。
⑤点击“查询数据”按钮,查询数据表Book中指定的数据,将查询结果通过Log显示。
(5)实验报告中要求用语言描述具体的实验步骤,并附以截图做辅助说明。
【具体过程参见课件——第3部分数据存储中的练习2-6。
】Mydatebase,javapublic class Mydatebase extends SQLiteOpenHelper {public static final String cerat= "create table if not exists book( _id integer primary key autoincrement, " +"name text,zuozhe text ,price real,page integer );";public Mydatebase(Context context, String name, CursorFactory factory, int version) {super(context, name, factory, version);// TODO Auto-generated constructor stub}@Overridepublic void onCreate(SQLiteDatabase db) {// TODO Auto-generated method stubdb、execSQL( cerat);}@Overridepublic void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {// TODO Auto-generated method stub}}创建数据库按钮protected void onCreate(Bundle savedInstanceState) {super、onCreate(savedInstanceState);setContentView(R、layout、activity_main);mydb=new Mydatebase(MainActivity、this, "BookStore、db", null, 1);btcreat=(Button)findViewById(R、id、create);btcreat、setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubdb=mydb、getWritableDatabase();//db、execSQL(INSERT_DATA);db、execSQL("insert into book (name,zuozhe,price,page)" +"Values('dnjkc','fdg',35、0,123)");}});添加数据按钮edname=(EditText)findViewById(R、id、ed1);edau=(EditText)findViewById(R、id、ed2);edjiage=(EditText)findViewById(R、id、ed3);edpage=(EditText)findViewById(R、id、ed4);btadd=(Button)findViewById(R、id、add);btadd、setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubString sname=edname、getText()、toString();String sau=edau、getText()、toString();Double djiage=Double、parseDouble(edjiage、getText()、toString());int ipage=Integer、parseInt(edpage、getText()、toString());ContentValues values=new ContentValues();values、put("name", sname);values、put("zuozhe",sau);values、put("price", djiage);values、put("page", ipage);SQLiteDatabase db=mydb、getWritableDatabase();db、insert("book", null, values);}});}修改数据按钮btgai=(Button)findViewById(R、id、xiu);btgai、setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubSQLiteDatabase db=mydb、getWritableDatabase();db、execSQL("update book set name='孙孟也' where name='smy';");}});}删除数据按钮btdelete=(Button)findViewById(R、id、delete);btdelete、setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubSQLiteDatabase db=mydb、getWritableDatabase();db、execSQL("delete from book where name='孙孟也'");}});查询数据按钮btcha=(Button)findViewById(R、id、select);btcha、setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubSQLiteDatabase db=mydb、getWritableDatabase();//查询Book表中所有的数据Cursor cursor=db、query("Book", null, null, null, null, null, null);if(cursor、moveToFirst()){do{//遍历cursor对象,取出数据并打印String name=cursor、getString(cursor、getColumnIndex("name"));String author=cursor、getString(cursor、getColumnIndex("zuozhe"));double price=cursor、getDouble(cursor、getColumnIndex("price"));int pages=cursor、getInt(cursor、getColumnIndex("page"));Log、d("Message","book name is"+name);Log、d("Message","book author is"+author);Log、d("Message","book price is"+price);Log、d("Message","book pages is"+pages);}while(cursor、moveToNext());}cursor、close();}});}。