js教程,超级邮件群发,金昌汽车站
一、首先写一个类继承sqliteopenhelper类
重写他的方法指定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, int oldversion, 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",null, 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", null,"name=?",new string[]{name},null,null, 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); int number = db.update("person", values,"name=?",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}); int number = db.delete("person","name=?",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, null, null, null, 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, null, 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 oldversion, 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, null, null, null, null, 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, null, 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, where, wherevalue); } }
四、写一个javabean设置他的get、set方法
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 studio开发小型对话机器人app(实例代码)
Android通过Java sdk的方式接入OpenCv的方法
Android 通过cmake的方式接入opencv的方法步骤
Android Studio finish()方法的使用与解决app点击“返回”(直接退出)
Android 进度条 ProgressBar的实现代码(隐藏、出现、加载进度)
网友评论