大佬教程收集整理的这篇文章主要介绍了Android应用中内嵌SQLite数据库的基本操作指南,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
重写他的方法指定db的名称、版本,重写oncreat和onUpgrade方法,写sql语句创建表
public class MysqLiteOpenHelper extends sqliteOpenHelper { private static String name = "person.db"; private static int version = 1; public MysqLiteOpenHelper(Context context){ super(context,name,null,version); } /* *数据库第一次被创建时调用的方法 *db是被创建的数据库 */ @Override public void onCreate(sqliteDatabase db) { db.execsql("create table person(id INTEGER PRIMary key autoincrement,name varchar(20),number varchar(20) )"); } /*当数据库版本更新时调用此方法*/ @Override public void onUpgrade(sqliteDatabase db,@R_673_1648@,int newVersion) { }
二、创建一个DAO类对外提供增删改查接口
其中执行增删改查的方法可以用sql语句也可以使用系统给出的API,下面的代码中把两种方法都写了出来
public class Persondao { private MysqLiteOpenHelper Helper; public Persondao(){ } public Persondao(Context context){ Helper = new MysqLiteOpenHelper(context); } public void add(String name,String number){ sqliteDatabase db = Helper.getWritableDatabase(); db.execsql("insert into person (name,number)values(?,?)",new Object[]{name,number}); /*ContentValues values = new ContentValues(); values.put("number",number); values.put("name",Name); long id = db.insert("Person",values);*/ db.close(); } public Boolean find(String Name){ sqliteDatabase db = Helper.getWritableDatabase(); //cursor cursor = db.rawQuery("SELEct *from person where name=?",new String[]{name}); cursor cursor = db.query("person","name=?",new String[]{name},null); Boolean result =cursor.moveToNext(); cursor.close(); db.close(); return result; } public int update(String name,String newnumber){ sqliteDatabase db = Helper.getWritableDatabase(); //db.execsql("update person set number=? where name=?",new Object[]{newnumber,namE}); ContentValues values = new ContentValues(); values.put("number",newnumber); @R_675_9293@umber = db.update("person",values,new String[]{newnumber}); db.close(); return number; } public int delet(String Name){ sqliteDatabase db = Helper.getWritableDatabase(); //db.execsql("delete from person where name=?",new String[]{name}); @R_675_9293@umber = db.delete("person",new String[]{name}); db.close(); return number; } public List<Person> findAll(){ List<Person> persons = new ArrayList<Person>(); sqliteDatabase db = Helper.getWritableDatabase(); //cursor cursor = db.rawQuery("SELEct *from person",null); cursor cursor = db.query("person",new String[]{"id","name","number"},null); while (cursor.moveToNext()) { int id = cursor.geTint(cursor.getcolumnIndex("id")); String name = cursor.getString(cursor.getcolumnIndex("name")); String number = cursor.getString(cursor.getcolumnIndex("number")); Person p = new Person(); persons.add(p); } db.close(); cursor.close(); return persons; } }
三、增删改查操作
import android.content.ContentValues; import android.content.Context; import android.database.cursor; import android.database.sqlite.sqliteDatabase; import android.database.sqlite.sqliteOpenHelper; public class ToDoDB extends sqliteOpenHelper { private final static String DATABASE_NAME = "todo_db"; private final static int DATABASE_VERSION = 1; private final static String table_NAME = "todo_table"; public final static String FIELD_id = "_id"; public final static String FIELD_TEXT = "todo_text"; public ToDoDB(Context context) { super(context,DATABASE_NAME,DATABASE_VERSION); } @Override public void onCreate(sqliteDatabase db) { /* 建立table */ String sql = "create table " + TABLE_NAME + " (" + FIELD_id + " INTEGER PRIMary key autoincrement," + " " + FIELD_TEXT + " text)"; db.execsql(sql); } @Override public void onUpgrade(sqliteDatabase db,int newVersion) { String sql = "drop table IF EXISTS " + TABLE_NAME; db.execsql(sql); onCreate(db); } public cursor SELEct() { sqliteDatabase db = this.getReadableDatabase(); cursor cursor = db .query(TABLE_NAME,null); return cursor; } public long insert(String text) { sqliteDatabase db = this.getWritableDatabase(); /* 将新增的值放入ContentValues */ ContentValues cv = new ContentValues(); cv.put(FIELD_TEXT,text); long row = db.insert(TABLE_NAME,cv); return row; } public void delete(int id) { sqliteDatabase db = this.getWritableDatabase(); String where = FIELD_id + " = ?"; String[] whereValue = { Integer.toString(id) }; db.delete(TABLE_NAME,where,wherevalue); } public void update(int id,String text) { sqliteDatabase db = this.getWritableDatabase(); String where = FIELD_id + " = ?"; String[] whereValue = { Integer.toString(id) }; /* 将修改的值放入ContentValues */ ContentValues cv = new ContentValues(); cv.put(FIELD_TEXT,text); db.update(TABLE_NAME,cv,wherevalue); } }
public class Person { private int id; private String name; private String number; public Person(){ } public Person(int id,String name,String number) { this.id = id; this.name = name; this.number = number; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String Name) { this.name = name; } public String getnumber() { return number; } public void setnumber(String number) { this.number = number; } }
五、mainactivity中使用它
private sqliteOpenHelper Helper; Persondao dao = new Persondao(); Helper = new MysqLiteOpenHelper(this); Helper.getWritableDatabase(); sqliteDatabase db = Helper.getWritableDatabase();
六、关于数据库的事务处理
android开发中数据库的操作非常慢,将所有操作打包成一个事务能够大大的提高处理速度,其中最重要的是保证了数据的一致性,让事务中的所有操作都能成功执行,或者失败,或者这所有操作都回滚。
sqliteDatabase db = Helper.getWritableDatabase(); db.begintransaction(); try{ //在这里执行多个数据库操作,执行过程中可能会抛出异常 db.execsql("update person set number=? where name=?",new Object[]{"1",jacky}); db.execsql("update person set number=? where name=?",new Object[]{"2","sunny"}); db.settransactionsuccessful(); }catch{ //捕获异常 throw e; }finally{ //所有操作完成结束一个事务 db.endtransaction(); db.close; }
以上是大佬教程为你收集整理的Android应用中内嵌SQLite数据库的基本操作指南全部内容,希望文章能够帮你解决Android应用中内嵌SQLite数据库的基本操作指南所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。