设为首页 收藏本站
查看: 1664|回复: 0

[经验分享] android 对sqlite数据库的增删改查

[复制链接]

尚未签到

发表于 2016-12-1 08:46:47 | 显示全部楼层 |阅读模式
Sqlite是android平台的一款轻量级的、嵌入式的、关系型数据库产品,以下是一些主要概念。
1.Sqlite通过文件保存数据库,创建的数据库文件默认存在在/data/data/<package>/databases/的文件夹下,一个文件就是一个数据库。2.一个数据库包含多个表格,一个表格包含不同的字段,字段类型等等,这与SQL数据库相似。  3.Sqlite记录没有顺序的概念,不存在第一第二类的概念,通过查询获取满足条件的记录。
  android平台下操作数据库的的相关类
  1、SQLiteOpenHelper 抽象类,用于创建和管理数据库以及版本,需要创建一个子类继承,该类封装了对数据库操作的基本方法,使用方便。
  2、SQLiteDatabase 数据库访问类,主要是对数据库的增删改查等常用操作,功能比SQLiteOpenHelper丰富,比如事务管理,分页等等。
  3、Cursor游标类,主要用来返回返回查询记录结果。
  本程序主要采用SQLiteDatabase类操作数 据库,介绍android 平台下Sqlite的多种使用方法。主要功能如图。
DSC0000.png

  图-1 Sqlite数据库界面的操作及其功能
DSC0001.jpg

  图-2 创建的数据库截图
  (1.)创建一个数据库

  • //在文件夹/data/data/<package>/databases/创建一个students.db的数据库  
  • //该类返回一个SQLiteDatabase,对那个数据库操作,就要打开该数据库  
  • openOrCreateDatabase("students.db",SQLiteDatabase.CREATE_IF_NECESSARY, null);  
  •    

  (2.)删除一个数据库
 

  • //在Context环境中,删除students.db,该方法返回一个boolean类型  
  • deleteDatabase("students.db");  
  •    

  (3.)获取应用程序所有数据库的名称
 

  • //在Context环境中,获取该应用程序的所有数据库名称(即databases文件夹下的数据库文件)  
  • //该方法返回一个字符串数组  
  • databaseList()  
  •    

  (4.)重命名一个数据库
 

  • //将数据库data.db重命名为renamedata.db  
  • File f = getDatabasePath("data.db");  
  • File renameFile=getDatabasePath("renamedata.db");  
  • f.renameTo(renameFile);  
  •    

  2.对表的操作
  (1.)创建一个表(sql语句中创建)
 

  • mDb.execSQL("create table if not exists "+table+  
  • " (id integer primary key autoincrement, "  
  • + "username text not null, info text not null);");  
  •    

  (2.)删除一个表
 

  • mDb.execSQL("drop table if exists " + table);  
  •    

  (3.)修改表
  Sqlite是不能修改一个表的字段,不能删除一个表的字段,但是可以重命名一个表的名称,可以添加一个字段及其属性
  1.)重命名表
 

  • mDb.execSQL("alter table " + oldTable + " rename to  "+ newTableName+";");  
  •    

  2.)添加一列
 

  • mDb.execSQL("alter table  " + table + " add column " + column +  type + " ;");  
  •    

  (4.)获取一个数据库的所有表的名称
 

  • mDb.rawQuery("select name from sqlite_master where type='table' order by name",null);  
  •    

  3.对数据库记录的操作
  (1.)添加一条记录
 

  • ContentValues values = new ContentValues();  
  • values.put("username", user.getUsername());  
  • values.put("info", user.getInfo());  
  • mDb.insert(table, null, values);  
  •    

  (2.)删除一条记录
 

  • String whereClause =  "id=?";  
  • String[] whereArgs = new String[] {String.valueOf(id)};  
  • mDb.delete(table, whereClause, whereArgs);  
  •    

  (3.)修改一条记录
 

  • ContentValues values = new ContentValues();  
  • values.put("username", username);  
  • values.put("info", info);  
  • String whereClause = "id=?";  
  • String[] whereArgs = new String[] { String.valueOf(id) };  
  • mDb.update(table, values, whereClause, whereArgs);  
  •    

  (4.)查询一条数据
 

  • String[] columns = new String[] { "id", "username", "info" };  
  • String selection = "id=?";  
  • String[] selectionArgs = { String.valueOf(id) };  
  • String groupBy = null;  
  • String having = null;  
  • String orderBy = null;  
  • mDb.query(table, columns, selection,selectionArgs, groupBy, having, orderBy);  
  •    

  (5.)查询所有记录
 

  • mDb.rawQuery("select * from "+table, null);  
  •    

  SqliteActivity源码类如下(注意:在点击对数据记录的增删改查时要先create table ,否则会因为无法找到mytable表而报错)
  SqliteActivity.java
 

  • package com.sqlite.main;  
  •   
  • import java.io.File;  
  • import android.app.Activity;  
  • import android.content.ContentValues;  
  • import android.database.Cursor;  
  • import android.database.SQLException;  
  • import android.database.sqlite.SQLiteDatabase;  
  • import android.os.Bundle;  
  • import android.text.Html;  
  • import android.view.View;  
  • import android.view.View.OnClickListener;  
  • import android.widget.Button;  
  • import android.widget.TextView;  
  • import android.widget.Toast;  
  •   
  • public class SqliteActivity extends Activity {  
  • /** Called when the activity is first created. */  
  •   
  •     //SQLiteDatabase 引用  
  •     SQLiteDatabase mDb;  
  •     SQLiteDatabaseDao dao;  
  •     //显示结果  
  •     TextView show;  
  •   
  •     @Override  
  •     public void onCreate(Bundle savedInstanceState) {  
  •          super.onCreate(savedInstanceState);  
  •          setContentView(R.layout.main);  
  •         //默认创建一个users.db的数据库  
  •          dao=new SQLiteDatabaseDao();  
  •     
  •     //创建一个数据库  
  •     Button createDatabase=(Button)findViewById(R.id.createdatabase);  
  •     createDatabase.setOnClickListener(createDatabaseClick);  
  •     //获取所有数据库  
  •     Button getDatabasesList=(Button)findViewById(R.id.getdatabaseslist);  
  •     getDatabasesList.setOnClickListener(getDatabaseListClick);  
  •     //重命名数据库  
  •     Button renameDatabase=(Button)findViewById(R.id.renamedatabase);  
  •     renameDatabase.setOnClickListener(renameDatabaseClick);  
  •     //删除一个数据库  
  •     Button removeDatabase=(Button)findViewById(R.id.removedatabase);  
  •     removeDatabase.setOnClickListener(removeDatabaseClick);  
  •     //创建一个表  
  •     Button createTable=(Button)findViewById(R.id.createtable);  
  •     createTable.setOnClickListener(createTableClick);  
  •     //获取所有的表  
  •     Button getTablesList=(Button)findViewById(R.id.gettableslist);  
  •     getTablesList.setOnClickListener(getTablesListClick);  
  •     //重命名一个表  
  •     Button renameTable=(Button)findViewById(R.id.renametable);  
  •     renameTable.setOnClickListener(renameTableClick);  
  •     //删除一个表  
  •     Button dropTable=(Button)findViewById(R.id.droptable);  
  •     dropTable.setOnClickListener(dropTableClick);  
  •     //为表添加一个字段  
  •     Button addTableColumn=(Button)findViewById(R.id.addtablecolumn);  
  •     addTableColumn.setOnClickListener(addTableColumnClick);  
  •     //获取表的所有列  
  •     Button getTableColumnsList=(Button)findViewById(R.id.gettablecolumnslist);  
  •     getTableColumnsList.setOnClickListener(getTableColumnsListClick);  
  •     //插入一条数据  
  •     Button insertTable=(Button)findViewById(R.id.inserttable);  
  •     insertTable.setOnClickListener(insertTableClick);  
  •     //查询一条数据  
  •     Button queryTable=(Button)findViewById(R.id.querytable);  
  •     queryTable.setOnClickListener(queryTableClick);  
  •     //更新一条数据  
  •     Button updateTable=(Button)findViewById(R.id.updatetable);  
  •     updateTable.setOnClickListener(updateTableClick);  
  •     //删除一条数据  
  •     Button delete=(Button)findViewById(R.id.delete);  
  •     delete.setOnClickListener(deleteClick);  
  •     //显示结果  
  •     show=(TextView)findViewById(R.id.showresult);    
  • }  
  •   
  • /************对按钮事件进行操作的事件响应****************/  
  •   
  •     //创建一个数据库  
  •     OnClickListener createDatabaseClick=new OnClickListener() {  
  •  
  •         @Override  
  •         public void onClick(View v) {  
  •         // TODO Auto-generated method stub  
  •         //创建一个名为students.db的数据库,主要是生成另外一个数据库以示区别  
  •         openOrCreateDatabase("students.db",  SQLiteDatabase.CREATE_IF_NECESSARY, null);  
  •         show.setText("创建的数据库路径为\n"  +getDatabasePath("students.db"));   
  •     }  
  • };  
  •    
  • //创建一个应用程序数据库的个数(list)的事件响应  
  • OnClickListener getDatabaseListClick=new OnClickListener() {  
  •     @Override  
  •     public void onClick(View v) {  
  •         // TODO Auto-generated method stub  
  •         String []dblist=dao.getDatabasesList();  
  •         String rs="";  
  •         for(String s:dblist){  
  •                  rs+=s+"\n";  
  •         }  
  •         show.setText("数据库名称为:\n"+ rs);    
  •    }  
  • };  
  •     
  • //重命名一个数据库的事件响应  
  • OnClickListener renameDatabaseClick=new OnClickListener() {    
  •     @Override  
  •     public void onClick(View v) {  
  •         // TODO Auto-generated method stub  
  •         //创建一个data.db的数据库,并命名为renamedata.db数据库  
  •         openOrCreateDatabase("data.db", SQLiteDatabase.CREATE_IF_NECESSARY, null);  
  •         File f = getDatabasePath("data.db");  
  •         File renameFile=getDatabasePath("renamedata.db");  
  •         boolean b=f.renameTo(renameFile);  
  •         if(b)  
  •                  show.setText("data.db已经重命名为renamedata.db");  
  •         else  
  •         show.setText("无法重命名");  
  •     }  
  • };    
  •   
  • //删除一个数据库的事件响应  
  • OnClickListener removeDatabaseClick=new OnClickListener() {  
  •     @Override  
  •     public void onClick(View v) {  
  •         // TODO Auto-generated method stub  
  •         /删除students.db数据库  
  •         dao.dropDatabase("students.db");  
  •         //重新获取数据库名称  
  •         String []dblist=dao.getDatabasesList();  
  •         String rs="";  
  • for(String s:dblist){  
  • rs+=s+"\n";  
  • }  
  • show.setText("数据库students.db已经删除\n现在数据库的名称为:\n"+rs);  
  • }  
  • };  
  •   
  • //创建一个表的事件响应  
  •   
  • OnClickListener createTableClick=new OnClickListener() {  
  •   
  • @Override  
  • public void onClick(View v) {  
  • // TODO Auto-generated method stub  
  • //在user.db数据库中插入mytable表,并添加相应的字段  
  • dao.createTable(mDb, "mytable");  
  • show.setText("数据库students.db已经创建mytable表\n");  
  •   
  • }  
  • };  
  •   
  •   
  • //获取一个数据库的所有表个数(list)的事件响应  
  •   
  • OnClickListener getTablesListClick=new OnClickListener() {  
  •   
  • @Override  
  • public void onClick(View v) {  
  • // TODO Auto-generated method stub  
  •   
  • //显示所有的表的数据  
  • String tableNames=dao.getTablesList(mDb);  
  • show.setText(tableNames);  
  •   
  • }  
  • };  
  •   
  • //重命名一个表的事件响应  
  •   
  • OnClickListener renameTableClick=new OnClickListener() {  
  •   
  • @Override  
  • public void onClick(View v) {  
  • // TODO Auto-generated method stub  
  • //创建一个testtable的表  
  • dao.createTable(mDb, "testtable");  
  • //将testtable重命名为newtable  
  • boolean b=dao.alterTableRenameTable(mDb, "testtable", "newtable");  
  • if(b)show.setText("testtable已经重命名为\nnewtable表\n");  
  • else show.setText("newtable已经存在\n请删除(drop table)后重试");  
  • }  
  • };  
  •   
  • //删除一个表的事件响应  
  •   
  • OnClickListener dropTableClick=new OnClickListener() {  
  •   
  • @Override  
  • public void onClick(View v) {  
  • // TODO Auto-generated method stub  
  • //删除    newtable表  
  • dao.dropTable(mDb, "newtable");  
  • //显示所有的表的数据  
  • String tableNames=dao.getTablesList(mDb);  
  • show.setText("newtable已经删除\n现在表名称为:\n"+tableNames);  
  • }  
  • };  
  •   
  •   
  • //修改一个表(给表添加一个字段)的事件响应  
  •   
  • OnClickListener addTableColumnClick=new OnClickListener() {  
  •   
  • @Override  
  • public void onClick(View v) {  
  • // TODO Auto-generated method stub  
  • //默认添加一个password字段,类型为varchar,长度为30  
  • boolean b=dao.alterTableAddColumn(mDb, "mytable", "password", " varchar(30)");  
  • if(b)show.setText("已经添加password字段\n字符类型为:varchar\n长度为:30");  
  • else show.setText("mytable表中password字段已经存在");  
  • }  
  • };  
  •   
  • //获取一个表的所有列的名称事件响应  
  •   
  • OnClickListener getTableColumnsListClick=new OnClickListener() {  
  •   
  • @Override  
  • public void onClick(View v) {  
  • // TODO Auto-generated method stub  
  •   
  • String str=dao.getTableColumns(mDb);  
  • show.setText("mytable表的列名:\n"+str);  
  • }  
  • };  
  •   
  •   
  • //对一个表添加一个数据的事件响应  
  •   
  • OnClickListener insertTableClick=new OnClickListener() {  
  •   
  • @Override  
  • public void onClick(View v) {  
  • // TODO Auto-generated method stub  
  •   
  • User user=new User();  
  • user.setUsername("Mr.Young");  
  • user.setInfo("好学生");  
  • dao.insert(mDb, "mytable", user);  
  •   
  • Cursor c=dao.getAllData(mDb, "mytable");  
  • if(c.moveToLast()){  
  • String id=c.getString(0);  
  • String username=c.getString(1);  
  • String info=c.getString(2);  
  •   
  • show.setText("最新添加的一条数据:\n"+"id:"+id+"\nusername:"+username+"\ninfo:"+info);  
  • }  
  •   
  • }  
  • };  
  •   
  • //查询一个表的所有数据记录的事件响应  
  •   
  • OnClickListener queryTableClick=new OnClickListener() {  
  •   
  • @Override  
  • public void onClick(View v) {  
  • // TODO Auto-generated method stub  
  • //默认查询mytable所有数据  
  •   
  • Cursor c=dao.getAllData(mDb, "mytable");  
  • String s="";  
  • int columnsSize=c.getColumnCount();  
  • String []columns=c.getColumnNames();  
  • String columnsName="";  
  • //获取表头  
  • for (String col : columns) {  
  •   
  • columnsName+=col+"\u0020 \u0020";  
  • }  
  • //获取表的内容  
  • while(c.moveToNext()){  
  •   
  • for(int i=0;i<columnsSize;i++){  
  • s+=c.getString(i)+"\u0020 \u0020";  
  • }  
  • s+="<br>";  
  • }  
  • show.setText(Html.fromHtml("<h5>"+columnsName+"</h5>"+s));  
  • }  
  • };  
  •   
  • //更新一个表的数据的事件响应  
  •   
  • OnClickListener updateTableClick=new OnClickListener() {  
  •   
  • @Override  
  • public void onClick(View v) {  
  • // TODO Auto-generated method stub  
  • Cursor c=dao.getAllData(mDb, "mytable");  
  • if(c.moveToFirst()){  
  •   
  • int first=Integer.valueOf(c.getString(0));  
  •   
  • //默认修改第一条记录  
  • dao.update(mDb, "mytable", first, "Yong Ming", "学习成绩优异");  
  • Cursor u=dao.queryById(mDb, "mytable", first);  
  • u.moveToFirst();  
  • show.setText("id为:"+first+"的记录已经修改:\nid:"+first+"\nusername:"+u.getString(1)+"\ninfo:"+u.getString(2));  
  •   
  • }else  
  •   
  • show.setText("没有要更新的记录!请添加数据后再作修改");  
  • }  
  • };  
  •   
  • //删除一个表的一条数据的事件响应  
  •   
  • OnClickListener deleteClick=new OnClickListener() {  
  •   
  • @Override  
  • public void onClick(View v) {  
  • // TODO Auto-generated method stub  
  • Cursor c=dao.getAllData(mDb, "mytable");  
  • if(c.moveToLast()){  
  • int last=Integer.valueOf(c.getString(0));  
  •   
  • //默认删除最后一条记录  
  • boolean b=dao.delete(mDb, "mytable", last);  
  • if(b)  
  • show.setText("成功删除id为:\n"+last+"的记录!");  
  • }  
  • else  
  • show.setText("没有要删除的记录!");  
  • }  
  • };  
  •   
  •   
  • //退出时关闭数据库  
  • @Override  
  • public void finish() {  
  • // TODO Auto-generated method stub  
  • super.finish();  
  • mDb.close();  
  • }  
  •   
  •   
  •   
  •   
  •   
  • /******************* 



  • * 对Sqlite数据库进行操作的类 



  • * ****************/  
  •   
  • class SQLiteDatabaseDao {  
  •   
  • public SQLiteDatabaseDao(){  
  • mDb=openOrCreateDatabase("users.db",  
  • SQLiteDatabase.CREATE_IF_NECESSARY, null);  
  • }  
  •   
  • /************ 对数据库的操作 ***********************/  
  •   
  • // 获取所有数据库的名称  
  • public String[] getDatabasesList() {  
  •   
  • return databaseList();  
  • }  
  •   
  • // 创建一个数据库  
  • public void createDatabase(String db) {  
  •   
  • openOrCreateDatabase(db, SQLiteDatabase.CREATE_IF_NECESSARY, null);  
  • }  
  •   
  • // 删除一个数据库  
  • public void dropDatabase(String db) {  
  •   
  • try {  
  • deleteDatabase(db);  
  •   
  • } catch (SQLException e) {  
  • Toast.makeText(getApplicationContext(), "删除数据库失败",  
  • Toast.LENGTH_LONG).show();  
  •   
  • }  
  • }  
  •   
  • /************ 对数据库的表的属性添加修改操作 ***********************/  
  •   
  • // 获取某个数据库的表的名称  
  • public String getTablesList(SQLiteDatabase mDb) {  
  •   
  • Cursor c = mDb  
  • .rawQuery(  
  • "select name from sqlite_master where type='table' order by name",  
  • null);  
  • String str="";  
  • while (c.moveToNext()) {  
  • str+=c.getString(0)+"\n";  
  •   
  • }  
  • return "表的名称为:\n"+str;  
  • }  
  •   
  • // 创建一个表,默认创建一个username info字段的表,可以在后面的代码中添加相应的列  
  • public void createTable(SQLiteDatabase mDb, String table) {  
  • try {  
  • mDb.execSQL("create table if not exists "+table+  
  • " (id integer primary key autoincrement, "  
  • + "username text not null, info text not null);");  
  • } catch (SQLException e) {  
  • Toast.makeText(getApplicationContext(), "数据表创建失败",  
  • Toast.LENGTH_LONG).show();  
  • }  
  • }  
  •   
  • // 删除一个表  
  • public void dropTable(SQLiteDatabase mDb, String table) {  
  •   
  • try {  
  • mDb.execSQL("drop table if exists " + table);  
  •   
  • } catch (SQLException e) {  
  • Toast.makeText(getApplicationContext(), "数据表删除失败",  
  • Toast.LENGTH_LONG).show();  
  • }  
  •   
  • }  
  •   
  • // 修改表--重命名表名  
  • public boolean alterTableRenameTable(SQLiteDatabase mDb, String oldTable,  
  • String newTableName) {  
  • try {  
  • mDb.execSQL("alter table " + oldTable + " rename to  "  
  • + newTableName+";");  
  •   
  • } catch (SQLException e) {  
  • Toast.makeText(getApplicationContext(), "数据表重命名失败",  
  • Toast.LENGTH_LONG).show();  
  • return false;  
  • }  
  •   
  • return true;  
  • }  
  •   
  • // 修改表--添加一列  
  • // @table 需要修改的table名  
  • // @column 添加的列的名称  
  • // @type 列的类型,如text,varchar等  
  • public boolean alterTableAddColumn(SQLiteDatabase mDb, String table,  
  • String column, String type) {  
  • try {  
  • mDb.execSQL("alter table  " + table + " add column " + column  
  • + type + " ;");  
  •   
  • } catch (SQLException e) {  
  • Toast.makeText(getApplicationContext(), "数据表添加失败",  
  • Toast.LENGTH_LONG).show();  
  • return false;  
  • }  
  •   
  • return true;  
  • }  
  •   
  • // 获取表的列的名称  
  • public String getTableColumns(SQLiteDatabase mDb) {  
  •   
  • Cursor c=dao.getAllData(mDb, "mytable");;  
  • String []columns=c.getColumnNames();  
  • String str="";  
  • for (String s : columns) {  
  •   
  • str+=s+"\n";  
  •   
  • }  
  •   
  • return str;  
  • }  
  •   
  • /************ 对数据库的表数据增删改查操作 ***********************/  
  • // 添加一条数据,默认只向username和info字段添加数据  
  •   
  • public long insert(SQLiteDatabase mDb,String table,User user) {  
  •   
  • ContentValues values = new ContentValues();  
  • values.put("username", user.getUsername());  
  • values.put("info", user.getInfo());  
  • return mDb.insert(table, null, values);  
  • }  
  •   
  • /* 

  • * 删除一条数据 
  • */  
  • public boolean delete(SQLiteDatabase mDb,String table,int id) {  
  •   
  • String whereClause =  "id=?";  
  • String[] whereArgs = new String[] {String.valueOf(id)};  
  • try{  
  • mDb.delete(table, whereClause, whereArgs);  
  • }catch (SQLException e) {  
  • Toast.makeText(getApplicationContext(), "删除数据库失败",  
  • Toast.LENGTH_LONG).show();  
  • return false;  
  • }  
  • return true;  
  • }  
  •   
  • /* 

  • * 修改一条数据 
  • */  
  • public void update(SQLiteDatabase mDb,String table,int id,String username,String info)  
  •  {  
  •   
  • ContentValues values = new ContentValues();  
  • values.put("username", username);  
  • values.put("info", info);  
  • String whereClause = "id=?";  
  • String[] whereArgs = new String[] { String.valueOf(id) };  
  • mDb.update(table, values, whereClause, whereArgs);  
  • }  
  •   
  • public Cursor queryById(SQLiteDatabase mDb,String table,int id) {  
  •   
  • // 第一个参数String:表名  
  • // 第二个参数String[]:要查询的列名  
  • // 第三个参数String:查询条件  
  • // 第四个参数String[]:查询条件的参数  
  • // 第五个参数String:对查询的结果进行分组  
  • // 第六个参数String:对分组的结果进行限制  
  • // 第七个参数String:对查询的结果进行排序  
  • String[] columns = new String[] { "id", "username", "info" };  
  • String selection = "id=?";  
  • String[] selectionArgs = { String.valueOf(id) };  
  • String groupBy = null;  
  • String having = null;  
  • String orderBy = null;  
  • return mDb.query(table, columns, selection,  
  • selectionArgs, groupBy, having, orderBy);  
  • }  
  •   
  • public Cursor getAllData(SQLiteDatabase mDb,String table) {  
  •   
  • //遍历表所有数据  
  • return mDb.rawQuery("select * from "+table, null);  
  •   
  •   
  • /** 如果需要返回指定的列,则执行以下语句 
  • String[] columns = new String[] { "id","username", "info" }; 
  • // 调用SQLiteDatabase类的query函数查询记录 
  • return mDb.query(table, columns, null, null, null, null, 
  • null); 
  •  
  • */  
  •   
  • }  
  •   
  • }  
  •   
  • }  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-307926-1-1.html 上篇帖子: Android学习笔记(九)-使用SQLite数据库 下篇帖子: Android四种存储方式: sharedpreference,file,SQlite,contentprovider。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表