安卓sqlite之增删改查(一)


  分类:

在安卓开发中不可避免的会遇到在手机中保存数据的时候,如果只是小量数据(如保存设置等)的话,用SharedPreferences是个极好的选择,它以键值对的形式保存数据,但是如果数据量比较多的话,比如一个键对应了一个集合的情况,此时再用SharedPreferences保存数据就显得吃力了,如果再需要对数据进行修改删除的操作,这个保存数据的方法明显不适合了,所以安卓本身也内置了sqlite数据库,对于保存app里面的数据已经够了。

新建安卓工程后新建一个类:DatabaseDBOpenHelper.java,该类继承自SQLiteOpenHelper,主要用于新建数据库,新建数据表和更新数据库:

[java]  view plain  copy
  1. public class DatabaseDBOpenHelper extends SQLiteOpenHelper {  
  2.   
  3.     /** 
  4.      * 数据库创建的构造方法  数据库名称  text.db ,版本号为1 
  5.      * @param context 
  6.      */  
  7.     public DatabaseDBOpenHelper(Context context) {  
  8.         super(context, "text.db"null1);  
  9.     }  
  10.   
  11.     /** 
  12.      * 初始化数据库的表结构 
  13.      */  
  14.     @Override  
  15.     public void onCreate(SQLiteDatabase db) {  
  16.         db.execSQL("create table student (id integer primary key autoincrement,name varchar(50),age integer,sex varchar(5),class varchar(50))");  
  17.     }  
  18.   
  19.     /** 
  20.      * 数据库版本升级时调用 
  21.      */  
  22.     @Override  
  23.     public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {  
  24.           
  25.     }  
  26. }  
改类中的构造方法用于创建数据库和初始版本号;onCreate方法用于初始化数据库的表结构,这里新建了一个student表,里面有id(主键),name,age,sex和class; onUpgrade方法用于数据库版本升级时调用,此时可以用测试类去测试一下看看新建语法有没有问题,看看有没有新建数据库:在清单文件中application节点上方添加四行代码(第三行要写自己应用的包名)
[html]  view plain  copy
  1. <instrumentation  
  2.        android:name="android.test.InstrumentationTestRunner"  
  3.        android:targetPackage="com.example.testsqlite" >  
  4.    </instrumentation>  
然后在application节点中的theme下面添加一行代码:<uses-library android:name="android.test.runner" />,接着新建测试类Testsqlite继承自AndroidTestCase,最后编写测试代码就可以了:
[java]  view plain  copy
  1. public void testCreateDatabase() {  
  2.         DatabaseDao dao = new DatabaseDao(getContext());  
  3.     }  
右键运行该测试方法,如果在左边的工具栏中JUnit下面的条变绿就表示新建数据库成功了,此时在File Explorer 的data/data/包名  目录下就可以看到新建成功的数据库和表结构,可以导出来用SQLite Expert Personal 3工具打开,没安装该工具的可以下载,简单安装即可使用非常方便: 点击打开链接

接下来就是增加,删除,修改,查找数据了,在SQLite Expert Personal 3工具里也可以先执行sqlite指令对表数据进行操作,其实在把指令写进代码之前可以先用该工具执行需要进行的指令以验证sqlite语句是否正确。

OK,现在用Java代码实现增删改查方法:

[java]  view plain  copy
  1.  * 向数据库中添加数据  
  2.  * @param name  
  3.  * @param age  
  4.  * @param sex  
  5.  * @param whichclass  
  6.  */  
  7. public void addStudent(String name, int age, String sex, String whichclass){  
  8.     SQLiteDatabase db = helper.getWritableDatabase();  
  9.     db.execSQL("insert into student(name,age,sex,class) values(?,?,?,?)",  
  10.             new Object[]{name, age, sex, whichclass});  
  11. }  
[java]  view plain  copy
  1. /** 
  2.      * 根据name值删除数据 
  3.      * @param name 
  4.      */  
  5.     public void deleteStudent(String name){  
  6.         SQLiteDatabase db = helper.getWritableDatabase();  
  7.         db.execSQL("delete from student where name=?",new Object[]{name});  
  8.     }  
[java]  view plain  copy
  1. /** 
  2.      * 根据name值修改表中数据 
  3.      * @param name 
  4.      * @param age 
  5.      * @param sex 
  6.      * @param whichclass 
  7.      */  
  8.     public void updateStudent(String name, int age, String sex, String whichclass){  
  9.         SQLiteDatabase db = helper.getWritableDatabase();  
  10.         db.execSQL("update student set age=?, sex=?,class=? where name=?",   
  11.                 new Object[]{age, sex, whichclass, name});  
  12.     }  
[java]  view plain  copy
  1. /** 
  2.      * 根据name值查询数据 
  3.      * @param name 
  4.      * @return 
  5.      */  
  6.     public StudentInfo findStudent(String name){  
  7.         SQLiteDatabase db = helper.getWritableDatabase();  
  8.         Cursor cursor = db.rawQuery("select age,sex,class from student where name=?",  
  9.                 new String[]{name});  
  10.         if(cursor.moveToNext()){  
  11.             StudentInfo info = new StudentInfo();  
  12.             info.setAge(cursor.getInt(0));  
  13.             info.setSex(cursor.getString(1));  
  14.             info.setWhichclass(cursor.getString(2));  
  15.             return info;  
  16.         }  
  17.         cursor.close();  
  18.         return null;  
  19.     }  
[java]  view plain  copy
  1. /** 
  2.      * 查询全部数据 
  3.      * @return 
  4.      */  
  5.     public ArrayList<StudentInfo> findAllstudent(){  
  6.         SQLiteDatabase db = helper.getWritableDatabase();  
  7.         ArrayList<StudentInfo> list = new ArrayList<StudentInfo>();  
  8.         Cursor cursor = db.rawQuery("select * from student",null);  
  9.         for (int i = 0; i < cursor.getCount(); i++) {  
  10.             cursor.moveToNext();  
  11.             StudentInfo info = new StudentInfo();  
  12.             info.setName(cursor.getString(1));  
  13.             info.setAge(cursor.getInt(2));  
  14.             info.setSex(cursor.getString(3));  
  15.             info.setWhichclass(cursor.getString(4));  
  16.             list.add(info);  
  17.         }  
  18.         cursor.close();  
  19.         db.close();  
  20.         return list;  
  21.     }  
[java]  view plain  copy
  1. /** 
  2.      * 获取记录总数 
  3.      * @return 
  4.      */  
  5.     public long getCounts(){  
  6.         SQLiteDatabase db = helper.getWritableDatabase();  
  7.         Cursor cursor = db.query("student",new String[]{"count(*)"},null,null,null,null,null);  
  8.         if(cursor.moveToNext()){  
  9.             return cursor.getLong(0);  
  10.         }  
  11.         return 0;  
  12.     }  

其实安卓除了使用rawQuery()和execSQL()方法操作数据外还有另外一种API可以对数据进行增删改查:

[java]  view plain  copy
  1.  * 向数据库中添加数据(另一种方法实现)  
  2.  * @param name  
  3.  * @param age  
  4.  * @param sex  
  5.  * @param whichclass  
  6.  */  
  7. public void addStudent1(String name, int age, String sex, String whichclass){  
  8.     SQLiteDatabase db = helper.getWritableDatabase();  
  9.     ContentValues values = new ContentValues();  
  10.     values.put("name", name);  
  11.     values.put("age", age);  
  12.     values.put("sex", sex);  
  13.     values.put("class", whichclass);  
  14.     db.insert("student"null, values);  
  15.     db.close();  
  16. }  
[java]  view plain  copy
  1. /** 
  2.      * 根据name值删除数据(另一种实现方法) 
  3.      * @param name 
  4.      */  
  5.     public void deleteStudent1(String name){  
  6.         SQLiteDatabase db = helper.getWritableDatabase();  
  7.         db.delete("student""name=?"new String[]{name});  
  8.     }  
[java]  view plain  copy
  1. /** 
  2.      * 根据name值修改表中数据(另一种方法实现) 
  3.      * @param name 
  4.      * @param age 
  5.      * @param sex 
  6.      * @param whichclass 
  7.      */  
  8.     public void updateStudent1(String name, int age, String sex, String whichclass){  
  9.         SQLiteDatabase db = helper.getWritableDatabase();  
  10.         ContentValues values = new ContentValues();  
  11.         values.put("age", age);  
  12.         values.put("sex", sex);  
  13.         values.put("class", whichclass);  
  14.         db.update("student", values, "name=?"new String[]{name});  
  15.     }  
[java]  view plain  copy
  1. /** 
  2.      * 根据name值查询数据(另一种查询方法) 
  3.      * @param name 
  4.      * @return 
  5.      */  
  6.     public StudentInfo findStudent1(String name){  
  7.         SQLiteDatabase db = helper.getWritableDatabase();  
  8.         Cursor cursor = db.query("student"new String[]{"name","age","sex","class"},  
  9.                 "name=?"new String[]{name},nullnullnull);  
  10.         if(cursor.moveToNext()){  
  11.             StudentInfo info = new StudentInfo();  
  12.             info.setName(cursor.getString(0));  
  13.             info.setAge(cursor.getInt(1));  
  14.             info.setSex(cursor.getString(2));  
  15.             info.setWhichclass(cursor.getString(3));  
  16.             return info;  
  17.         }  
  18.         cursor.close();  
  19.         return null;  
  20.     }  
剩下的就是在测试类中写测试代码来测试每个方法了,我已经将这些例子写成demo了,有兴趣的朋友可以下载看看共同学习进步,demo下载: 点击打开下载demo
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Android Studio中使用SQLite数据库进行增删改查的步骤如下: 1. 创建数据库 在Android Studio中,可以使用SQLiteOpenHelper类来创建和管理数据库。首先,需要创建一个继承自SQLiteOpenHelper的类,并实现onCreate()和onUpgrade()方法。在onCreate()方法中,可以创建数据库表和初始化数据。 2. 插入数据 使用ContentValues类来存储要插入的数据,然后使用insert()方法将数据插入到数据库中。 3. 查询数据 使用query()方法查询数据库中的数据,可以指定查询条件、排序方式等参数。查询结果会返回一个Cursor对象,可以通过Cursor对象遍历查询结果。 4. 更新数据 使用ContentValues类来存储要更新的数据,然后使用update()方法将数据更新到数据库中。 5. 删除数据 使用delete()方法删除数据库中的数据,可以指定删除条件。 以上就是Android Studio中使用SQLite数据库进行增删改查的基本步骤。 ### 回答2: SQLite是Android Studio中内置的轻量级关系型数据库。 它在应用程序中被广泛使用,可以轻松地进行数据位置的插入、更新、删除和查询。下面将对如何在Android Studio中增删改查SQLite数据库进行详细介绍。 1. 创建数据库 在Android Studio中,打开新的“Android项目”并在后台中打开SQLite数据库。 首先需要在该项目的build.gradle文件中添加以下代码: ```java implementation 'com.android.support:support-sqlite:28.0.0' ``` 随后,我们建立一个新类,并在该类中创建由SQLiteOpenHelper扩展而来的helper类。 这可以通过从SQLiteOpenHelper创建一个适当的构造函数,并覆盖其onCreate()和onUpgrade()方法来完成。完成后,在主要应用程序中实例化helper。 2. 增加数据 要添加新数据,请创建一个行对象,然后可以使用该表的insert()方法将其插入到数据库中。下面是一个示例代码: ```java SQLiteDatabase db = this.getWritableDatabase(); ContentValues contentValues = new ContentValues(); contentValues.put("name", “John Smith”); contentValues.put("age", 23); db.insert(“mytable”, null, contentValues); ``` 其中mytable是表名,name和age是表中列名。 3. 更新数据 要更新数据,请使用Table的update()方法。要更新给定行中的具体数据,请使用ContentValues对象,该对象可以使用put()方法来指定一个新值。下面是一个示例代码: ```java SQLiteDatabase db = this.getWritableDatabase(); ContentValues contentValues = new ContentValues(); contentValues.put("age", 25); db.update(“tablename”, contentValues, “id=4”, null); ``` 这将会把id值为4的行的年龄值更新为25。 4. 删除数据 要删除数据,请使用Table的delete()方法。这个方法需要一个SQL语句作为参数。例如,如果要删除表中的一个特定行,请使用以下代码: ```java SQLiteDatabase db = this.getWritableDatabase(); db.delete(“mytable”, “id=2”, null); ``` 这将删除表mytable中id为2的行。 5. 查询数据 要查询数据,请使用query()方法。该方法需要传入一个表名、要返回的列和一些可选的where、group by和having语句的参数。下面是一个示例代码: ```java SQLiteDatabase db = this.getWritableDatabase(); Cursor cursor = db.query(“mytable”, new String[]{“id”, “name”, “age”}, null, null, null, null, null); ``` 这会查询mytable表中的id、name和age列,并将结果存储在Cursor对象cursor中。 以上是关于如何在Android Studio中增删改查SQLite数据库的简要介绍,这个过程还可以通过使用ORM类库等其他方法来简化。 但是,以上方法是SQLite基础部分中较为重要的部分。如有不懂之处,可以查看Android Studio SQLite官方文档进行更全面的了解。 ### 回答3: 在 Android Studio 中,开发者可以使用 SQLite 数据库来存储和管理应用程序中的数据。SQLite 是一种轻量级的关系型数据库,它非常适合于移动应用程序的存储需求。在本文中,我们将介绍如何使用 Android Studio 来完成 SQLite 数据库增删改查操作。 首先,我们需要在 Android Studio 中创建一个新的 Android 项目。在项目创建的过程中,需要设置应用程序的名称、包名和所支持的最低 API 级别等信息。之后,我们需要创建一个新的数据库表,表中包含应用程序需要存储的数据。 我们可以使用 SQLiteOpenHelper 类来创建和管理数据库SQLiteOpenHelper 类提供了一些方法来帮助我们处理 SQLite 数据库的创建和更新。在创建一个 SQLiteOpenHelper 对象时,我们需要提供数据库名称、版本号和表的结构。 接下来,我们将介绍如何使用 SQLiteDatabase 类来完成增删改查操作。SQLiteDatabase 类提供了一些方法来帮助我们对数据库进行操作。 1. 增加数据 使用 insert() 方法可以向数据库表中插入一行数据。insert() 方法需要传入表名、要插入的数据和一个选项参数。以下是一个示例: SQLiteDatabase db = dbHelper.getWritableDatabase(); ContentValues values = new ContentValues(); values.put("name", "Tom"); values.put("age", 18); db.insert("students", null, values); 2. 删除数据 使用 delete() 方法可以从数据库表中删除一行或多行数据。delete() 方法需要传入表名和一个选择字符串来限制删除范围。以下是一个示例: SQLiteDatabase db = dbHelper.getWritableDatabase(); db.delete("students", "name=?", new String[]{"Tom"}); 3. 修改数据 使用 update() 方法可以修改数据库表中的一行或多行数据。update() 方法需要传入表名、要修改的数据和一个选择字符串来限制修改范围。以下是一个示例: SQLiteDatabase db = dbHelper.getWritableDatabase(); ContentValues values = new ContentValues(); values.put("age", 20); db.update("students", values, "name=?", new String[]{"Tom"}); 4. 查询数据 使用 query() 方法可以从数据库表中查询一行或多行数据。query() 方法需要传入表名、要查询的列、一个选择字符串和一个排序字符串。以下是一个示例: SQLiteDatabase db = dbHelper.getReadableDatabase(); Cursor cursor = db.query("students", new String[]{"name", "age"}, "age=?", new String[]{"20"}, null, null, null); if (cursor != null) { while (cursor.moveToNext()) { String name = cursor.getString(cursor.getColumnIndex("name")); int age = cursor.getInt(cursor.getColumnIndex("age")); Log.d(TAG, "name:" + name + ", age:" + age); } cursor.close(); } 在使用 SQLite 数据库过程中,我们需要注意一些事项。比如,我们需要保证数据库的打开和关闭操作是成对出现的,以避免资源的浪费;我们还需要注意表名、列名和选择字符串等信息的正确性,否则会导致数据操作失败。此外,还应该使用事务来保证数据库操作的正确性和一致性。 总之,使用 Android Studio 的 SQLite 数据库功能可以帮助我们方便地管理应用程序中的数据。通过学习 SQLite 数据库增删改查操作,我们可以更好地开发出高质量、稳定性的移动应用程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值