android Api操作SQLite数据库的示例代码
import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; /** * 创建数据库帮助类 extends SQLiteOpenHelper */ public class MyDbOpenHelper extends SQLiteOpenHelper { /** * 构造方法 * * @param context * 上下文 * @param name * 数据库名称 * @param factory * null * @param version * 数据库的版本号 >=1 * 只能升级不能降级 */ public MyDbOpenHelper(Context context) { super(context,"Info.db",null,1); } /** * 第一次创建数据库的时候调用 * 适合初始化数据库的表 */ @Override public void onCreate(SQLiteDatabase db) { db.execSQL("create table stu(_id integer primary key autoincrement,name varchar(20),num varchar(20),money varchar(20))"); } /** * 数据库升级时,调用 * 修改数据库的表 */ @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { System.out.println("onUpgrade"); } }
import android.app.Activity; import android.content.ContentValues; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.os.Bundle; import android.view.View; import android.widget.Toast; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } public void trans(View v) { // 1. 在内存中创建数据库帮助类的对象 MyDbOpenHelper helper = new MyDbOpenHelper(this); // 2. 在磁盘上创建数据库文件 SQLiteDatabase db = helper.getWritableDatabase(); /* ContentValues values = new ContentValues(); values.put("name", "张三"); values.put("money", "1"); values.put("num", 001); db.insert("stu", null, values); ContentValues values1 = new ContentValues(); values1.put("name", "我"); values1.put("money", "100000000"); values1.put("num", 002); db.insert("stu", null, values1);*/ try { db.beginTransaction();//开启事务 //转账 ContentValues values = new ContentValues(); values.put("money", 1); db.update("stu", values, "name=?", new String[]{"张三"}); //int a = 5/0;//模拟事务失败对结果的影响 ContentValues values1 = new ContentValues(); values1.put("money", 20000000); db.update("stu", values1, "name=?", new String[]{"Me"}); db.setTransactionSuccessful();//事务操作成功 } catch (Exception e) { }finally{ db.endTransaction();//关闭事务 } // 释放资源 db.close(); } public void insert(View v) { // 1. 在内存中创建数据库帮助类的对象 MyDbOpenHelper helper = new MyDbOpenHelper(this); // 2. 在磁盘上创建数据库文件 SQLiteDatabase db = helper.getWritableDatabase(); /** * table :表名 * nullColumnHack: */ ContentValues values = new ContentValues(); values.put("name", "张三"); values.put("num", 123); long id = db.insert("stu", null, values); if (id == -1) { Toast.makeText(this, "插入失败", 0).show(); }else { Toast.makeText(this, "id="+id, 0).show(); } // 释放资源 db.close(); } public void delete(View v) { // 1. 在内存中创建数据库帮助类的对象 MyDbOpenHelper helper = new MyDbOpenHelper(this); // 2. 在磁盘上创建数据库文件 SQLiteDatabase db = helper.getWritableDatabase(); int id = db.delete("stu", null, null); if (id == 0) { Toast.makeText(this, "删除失败", 0).show(); }else { Toast.makeText(this, "id="+id, 0).show(); } // 释放资源 db.close(); } public void update(View v) { // 1. 在内存中创建数据库帮助类的对象 MyDbOpenHelper helper = new MyDbOpenHelper(this); // 2. 在磁盘上创建数据库文件 SQLiteDatabase db = helper.getWritableDatabase(); /** * table :表名 * values :修改的列 * whereClause :修改条件 * whereArgs :修改条件的占位符 */ ContentValues values = new ContentValues(); values.put("name", "songxiaobao"); int id = db.update("stu", values, null, null); if (id == 0) { Toast.makeText(this, "删除失败", 0).show(); }else { Toast.makeText(this, "id="+id, 0).show(); } // 释放资源 db.close(); } public void query(View v){ // 1. 在内存中创建数据库帮助类的对象 MyDbOpenHelper helper = new MyDbOpenHelper(this); // 2. 在磁盘上创建数据库文件 SQLiteDatabase db = helper.getReadableDatabase(); /** * table :表名 * columns :要查询的列 * selection :查询条件 * selectionArgs :查询条件的占位符 * groupBy :分组 * having :条件 * orderBy :排序 */ Cursor cursor = db.query("stu", new String[]{"name","num","_id","money"}, null,null,null,null,null); while(cursor.moveToNext()){ String id = cursor.getString(2); String name = cursor.getString(0); String num = cursor.getString(1); String money = cursor.getString(3); } //释放资源 cursor.close(); // 释放资源 db.close(); } }
最后,关注【码上加油站】微信公众号后,有疑惑有问题想加油的小伙伴可以码上加入社群,让我们一起码上加油吧!!!