安卓开发-实现数据库的CRUD操作
2017-10-05 15:37
561 查看
1.创建DBOpenHelper类继承SQLiteOpenHelper:
public class DBOpenHelper extends SQLiteOpenHelper implements BaseColumns { public static final String DB_NAME = "contact.db";//数据库的名称 public static final int DB_VERSION = 6;//数据库的版本 public static final String _TABLENAME = "_contactinfo";//表名 public static final String _USERNAME = "_username";//属性名 public static final String _PHONE = "_phone";//属性名 //通过传入context对象创建数据库对象 public DBOpenHelper(Context context) { super(context, DB_NAME, null, DB_VERSION); } //当数据库当调用函数getWritableDatabase()/getReadableDatabase()且数据库database文件不在时执行 public void onCreate(SQLiteDatabase db) { db.execSQL("create table " + _TABLENAME + "(" + _ID + " integer primary key autoincrement, " + _USERNAME + " text, " + _PHONE + " text)"); } //版本更新时执行 public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { } }
2.定义CRUD操作的接口IContactDao:
public interface IContactDao { //向表中插入一条数据 boolean addContact(String username, String phone); //通过指定phone删除表中的一条数据 boolean deleteContact(String phone); //通过phone更新一条数据 boolean updateContact(String username, String phone); //通过phone查询该条数据 String queryContact(String phone); }
3.定义实现接口IContactDao的类ContactDaoImpl和ContactGoogleDaoImpl:
public class ContactDaoImpl implements IContactDao { private static DBOpenHelper mHelper; public ContactDaoImpl(Context c) { mHelper = new DBOpenHelper(c); } public boolean addContact(String username, String phone) { SQLiteDatabase database = mHelper.getWritableDatabase(); database.execSQL("insert into " + DBOpenHelper._TABLENAME + " ("+DBOpenHelper._USERNAME+","+DBOpenHelper._PHONE+") values (?, ?)", new String[] { username, phone }); return true; } public boolean deleteContact(String phone) { SQLiteDatabase database = mHelper.getWritableDatabase(); database.execSQL("delete from " + DBOpenHelper._TABLENAME + " where "+DBOpenHelper._PHONE+" = ?", new String[] { phone }); return true; } public boolean updateContact(String username, String phone) { SQLiteDatabase database = mHelper.getWritableDatabase(); database.execSQL("update " + DBOpenHelper._TABLENAME + " set "+DBOpenHelper._USERNAME+" = ?, "+DBOpenHelper._PHONE+" = ?", new String[] { username, phone }); return true; } public String queryContact(String phone) { SQLiteDatabase database = mHelper.getWritableDatabase(); Cursor cursor = database.rawQuery("select "+DBOpenHelper._USERNAME+" from "+DBOpenHelper._TABLENAME+" where "+DBOpenHelper._PHONE+" = ?", new String[] { phone }); if(cursor.moveToNext()){ String username = cursor.getString(0); Log.v("aaa", username); } return null; } } public class ContactGoogleDaoImpl implements IContactDao { private DBOpenHelper dbHelper; public ContactGoogleDaoImpl(Context c) { dbHelper = new DBOpenHelper(c); } public boolean addContact(String username, String phone) { SQLiteDatabase database = dbHelper.getWritableDatabase(); ContentValues values = new ContentValues(); values.put(DBOpenHelper._USERNAME, username); values.put(DBOpenHelper._PHONE, phone); Long rawNum = database.insert(DBOpenHelper._TABLENAME, null, values); return rawNum != -1L; } public boolean deleteContact(String phone) { SQLiteDatabase database = dbHelper.getWritableDatabase(); int rawNum = database.delete(DBOpenHelper._TABLENAME, DBOpenHelper._PHONE + "= ?", new String[] { phone }); return rawNum != 0; } public boolean updateContact(String username, String phone) { SQLiteDatabase database = dbHelper.getWritableDatabase(); ContentValues values = new ContentValues(); values.put(DBOpenHelper._USERNAME, username); int rawNum = database.update(DBOpenHelper._TABLENAME, values, DBOpenHelper._PHONE + "= ?", new String[] { phone }); return rawNum != 0; } public String queryContact(String phone) { String result = ""; SQLiteDatabase database = dbHelper.getReadableDatabase(); Cursor cursor = database.query(DBOpenHelper._TABLENAME, new String[] { DBOpenHelper._USERNAME, DBOpenHelper._PHONE }, DBOpenHelper._PHONE + "= ?", new String[] { phone }, null, null, null); String usernameValue = ""; String phoneValue = ""; while(cursor.moveToNext()){ int usernameIndex = cursor.getColumnIndex(DBOpenHelper._USERNAME); usernameValue = cursor.getString(usernameIndex); int phoneIndex = cursor.getColumnIndex(DBOpenHelper._PHONE); phoneValue = cursor.getString(phoneIndex); } result += usernameValue; result += phoneValue; return result; } }
4.在MainActivity中调用ContactDaoImpl中的方法:
public class MainActivity extends Activity { private IContactDao mContactDao = new ContactGoogleDaoImpl(this); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } public void addContactClick(View v){ boolean ifChanged = mContactDao.addContact("张三", "111"); Toast.makeText(this, ifChanged ? "添加成功" : "添加失败", Toast.LENGTH_SHORT).show(); } public void deleteContactClick(View v){ boolean ifChanged = mContactDao.deleteContact("111"); Toast.makeText(this, ifChanged ? "删除成功" : "删除失败", Toast.LENGTH_SHORT).show(); } public void updateContactClick(View v){ boolean ifChanged = mContactDao.updateContact("李四", "111"); Toast.makeText(this, ifChanged ? "修改成功" : "更新失败", Toast.LENGTH_SHORT).show(); } public void queryContactClick(View v){ String result = mContactDao.queryContact("111"); Toast.makeText(this, result, Toast.LENGTH_SHORT).show(); } }
5.Sqlite工具的使用:
1.位置:sdk/tools/sqlite3.exe 2.使用: 2.1:cmd中,adb -s 模拟器名称 shell 2.2:cd /data/data/包名/databases 2.3:sqlite3 数据库文件名(contact.db) .tables : 查看所有表 sql语句 :执行 sqlite.quit:退出
相关文章推荐
- 利用反射实现对sqlite3数据库的crud(增删改查)操作的一个baseAndroidDao封装,安卓开发中
- 安卓服务端开发(1) 安卓结合PHP实现连接数据库验证登录功能(附全部代码)
- Android数据库CRUD操作的封装与实现
- 安卓开发培训(3.2 使用SharedPreferences实现Android数据读写操作)
- 安卓开发——实现监听EditText的文字变化操作
- spring-jdbctemplate对数据库的crud操作---idea实现
- spring webservice 开发demo (实现基本的CRUD 数据库采用H2)
- 安卓TV开发(九) Android模拟事件并实现遥控器模拟鼠标操作
- mybatis实战之路,疯狂的数据库操作框架、动态sql实现CRUD及带条件的增CRUD
- Tom White 是 Kizoom 的首席 Java 开发人员 实现的 如何实现每天定时对数据库的操作
- Jmeter插件开发实现对mongo数据库的操作
- 安卓开发-数据库dao层的简单CRUD
- 安卓开发中实现页面越界回弹和上下拉的刷新自定义动画的操作(TwinklingRefreshLayout布局的使用)
- 使用c3p0技术实现对数据库crud操作的自定义封装
- Android SQLite数据库(事务)的使用,多线程CRUD并发操作(可用于实际开发)
- tp数据库与模型——查询条件生成方法、查询构造器实现CRUD操作
- 短信猫开发接口只用操作数据库即可实现短信收发
- java实现mongo数据库的CRUD操作
- Jorm实现简单的数据库CRUD操作
- 如何通过GridView实现数据库的CRUD操作