一、 SQLite介绍
SQLite是android内置的一个很小的关系型数据库。
SQLite的官网是http://www.sqlite.org/,可以去下载一些文档或相关信息。
博客中有一篇有稍微详细一点的介绍,大家可以去看一下。

二、 SQLiteOpenHelper的使用方法
SQLiteOpenHelper是一个辅助类来管理数据库的创建和版本。
可以通过继承这个类,实现它的一些方法来对数据库进行一些操作。
所有继承了这个类的类都必须实现下面这样的一个构造方法:
public DatabaseHelper(Context context, String name, CursorFactory factory, int version)
第一个参数:Context类型,上下文对象。
第二个参数:String类型,数据库的名称
第三个参数:CursorFactory类型
第四个参数:int类型,数据库版本
下面是这个类的几个方法:

方法名 返回类型 描述 备注
getReadableDatabase() synchronized SQLiteDatabase 创建或打开一个数据库 可以通过这两个方法返回的SQLiteDatabase对象对数据库进行一系列的操作,如新建一个表,插入一条数据等
getWritableDatabase() synchronized SQLiteDatabase 创建或打开一个可以读写的数据库
onCreate(SQLiteDatabase db) abstract void 第一次创建的时候调用
onOpen(SQLiteDatabase db) void 打开数据库
onUpgrade(SQLiteDatabase db,int oldVersion,int newVersion) abstract void 升级数据库
close() synchronized void 关闭所有打开的数据库对象

下面有一个例子,当点击按钮时进行相应的操作,效果图如下:


介于代码中有详细备注了,在此我就不多写了,直接贴代码了,代码如下:
DatabaseHelper类:
Java代码

  1. packageandroid.sqlite;
  2. importandroid.content.Context;
  3. importandroid.database.sqlite.SQLiteDatabase;
  4. importandroid.database.sqlite.SQLiteOpenHelper;
  5. importandroid.database.sqlite.SQLiteDatabase.CursorFactory;
  6. /**
  7. *SQLiteOpenHelper是一个辅助类,用来管理数据库的创建和版本他,它提供两个方面的功能
  8. *第一,getReadableDatabase()、getWritableDatabase()可以获得SQLiteDatabase对象,通过该对象可以对数据库进行操作
  9. *第二,提供了onCreate()、onUpgrade()两个回调函数,允许我们再创建和升级数据库时,进行自己的操作
  10. */
  11. publicclassDatabaseHelperextendsSQLiteOpenHelper{
  12. privatestaticfinalintVERSION=1;
  13. /**
  14. *在SQLiteOpenHelper的子类当中,必须有该构造函数
  15. *@paramcontext上下文对象
  16. *@paramname数据库名称
  17. *@paramfactory
  18. *@paramversion当前数据库的版本,值必须是整数并且是递增的状态
  19. */
  20. publicDatabaseHelper(Contextcontext,Stringname,CursorFactoryfactory,
  21. intversion){
  22. //必须通过super调用父类当中的构造函数
  23. super(context,name,factory,version);
  24. }
  25. publicDatabaseHelper(Contextcontext,Stringname,intversion){
  26. this(context,name,null,version);
  27. }
  28. publicDatabaseHelper(Contextcontext,Stringname){
  29. this(context,name,VERSION);
  30. }
  31. //该函数是在第一次创建的时候执行,实际上是第一次得到SQLiteDatabase对象的时候才会调用这个方法
  32. @Override
  33. publicvoidonCreate(SQLiteDatabasedb){
  34. //TODOAuto-generatedmethodstub
  35. System.out.println("createadatabase");
  36. //execSQL用于执行SQL语句
  37. db.execSQL("createtableuser(idint,namevarchar(20))");
  38. }
  39. @Override
  40. publicvoidonUpgrade(SQLiteDatabasearg0,intarg1,intarg2){
  41. //TODOAuto-generatedmethodstub
  42. System.out.println("upgradeadatabase");
  43. }
  44. }

Activity类:

Java代码
  1. packageandroid.sqlite;
  2. importandroid.app.Activity;
  3. importandroid.content.ContentValues;
  4. importandroid.database.Cursor;
  5. importandroid.database.sqlite.SQLiteDatabase;
  6. importandroid.os.Bundle;
  7. importandroid.view.View;
  8. importandroid.view.View.OnClickListener;
  9. importandroid.widget.Button;
  10. publicclassSQLiteActivityextendsActivity{
  11. /**Calledwhentheactivityisfirstcreated.*/
  12. privateButtoncreateDatabaseButton=null;
  13. privateButtonupdateDatabaseButton=null;
  14. privateButtoninsertButton=null;
  15. privateButtonupdateButton=null;
  16. privateButtonselectButton=null;
  17. privateButtondeleteButton=null;
  18. @Override
  19. publicvoidonCreate(BundlesavedInstanceState){
  20. super.onCreate(savedInstanceState);
  21. setContentView(R.layout.main);
  22. //根据控件id获得相应的控件对象
  23. createDatabaseButton=(Button)findViewById(R.id.createDatabase);
  24. updateDatabaseButton=(Button)findViewById(R.id.updateDatabase);
  25. insertButton=(Button)findViewById(R.id.insert);
  26. updateButton=(Button)findViewById(R.id.update);
  27. selectButton=(Button)findViewById(R.id.select);
  28. deleteButton=(Button)findViewById(R.id.delete);
  29. //为按钮设置监听器
  30. createDatabaseButton
  31. .setOnClickListener(newCreateDatabaseOnClickListener());
  32. updateDatabaseButton
  33. .setOnClickListener(newUpdateDatabaseOnClickListener());
  34. insertButton.setOnClickListener(newInsertOnClickListener());
  35. updateButton.setOnClickListener(newUpdateOnClickListener());
  36. selectButton.setOnClickListener(newSelectOnClickListener());
  37. deleteButton.setOnClickListener(newDeleteOnClickListener());
  38. }
  39. //createDatabaseButton点击事件监听器
  40. classCreateDatabaseOnClickListenerimplementsOnClickListener{
  41. publicvoidonClick(Viewv){
  42. //创建了一个DatabaseHelper对象,只执行这句话是不会创建或打开连接的
  43. DatabaseHelperdbHelper=newDatabaseHelper(SQLiteActivity.this,
  44. "test_yangyz_db");
  45. //只有调用了DatabaseHelper的getWritableDatabase()方法或者getReadableDatabase()方法之后,才会创建或打开一个连接
  46. SQLiteDatabasesqliteDatabase=dbHelper.getReadableDatabase();
  47. }
  48. }
  49. //updateDatabaseButton点击事件监听器
  50. classUpdateDatabaseOnClickListenerimplementsOnClickListener{
  51. publicvoidonClick(Viewv){
  52. //TODOAuto-generatedmethodstub
  53. DatabaseHelperdbHelper=newDatabaseHelper(SQLiteActivity.this,
  54. "test_yangyz_db",2);
  55. //得到一个只读的SQLiteDatabase对象
  56. SQLiteDatabasesqliteDatabase=dbHelper.getReadableDatabase();
  57. }
  58. }
  59. //insertButton点击事件监听器
  60. classInsertOnClickListenerimplementsOnClickListener{
  61. publicvoidonClick(Viewv){
  62. //创建ContentValues对象
  63. ContentValuesvalues=newContentValues();
  64. //向该对象中插入键值对,其中键是列名,值是希望插入到这一列的值,值必须和数据库当中的数据类型一致
  65. values.put("id",1);
  66. values.put("name","yangyz");
  67. //创建DatabaseHelper对象
  68. DatabaseHelperdbHelper=newDatabaseHelper(SQLiteActivity.this,
  69. "test_yangyz_db",2);
  70. //得到一个可写的SQLiteDatabase对象
  71. SQLiteDatabasesqliteDatabase=dbHelper.getWritableDatabase();
  72. //调用insert方法,就可以将数据插入到数据库当中
  73. //第一个参数:表名称
  74. //第二个参数:SQl不允许一个空列,如果ContentValues是空的,那么这一列被明确的指明为NULL值
  75. //第三个参数:ContentValues对象
  76. sqliteDatabase.insert("user",null,values);
  77. }
  78. }
  79. //updateButton点击事件监听器
  80. classUpdateOnClickListenerimplementsOnClickListener{
  81. publicvoidonClick(Viewv){
  82. //创建一个DatabaseHelper对象
  83. DatabaseHelperdbHelper=newDatabaseHelper(SQLiteActivity.this,
  84. "test_yangyz_db",2);
  85. //得到一个可写的SQLiteDatabase对象
  86. SQLiteDatabasesqliteDatabase=dbHelper.getWritableDatabase();
  87. //创建一个ContentValues对象
  88. ContentValuesvalues=newContentValues();
  89. values.put("name","zhangsan");
  90. //调用update方法
  91. //第一个参数String:表名
  92. //第二个参数ContentValues:ContentValues对象
  93. //第三个参数String:where字句,相当于sql语句where后面的语句,?号是占位符
  94. //第四个参数String[]:占位符的值
  95. sqliteDatabase.update("user",values,"id=?",newString[]{"1"});
  96. System.out.println("-----------update------------");
  97. }
  98. }
  99. //selectButton点击事件监听器
  100. classSelectOnClickListenerimplementsOnClickListener{
  101. publicvoidonClick(Viewv){
  102. Stringid=null;
  103. Stringname=null;
  104. //创建DatabaseHelper对象
  105. DatabaseHelperdbHelper=newDatabaseHelper(SQLiteActivity.this,
  106. "test_yangyz_db",2);
  107. //得到一个只读的SQLiteDatabase对象
  108. SQLiteDatabasesqliteDatabase=dbHelper.getReadableDatabase();
  109. //调用SQLiteDatabase对象的query方法进行查询,返回一个Cursor对象:由数据库查询返回的结果集对象
  110. //第一个参数String:表名
  111. //第二个参数String[]:要查询的列名
  112. //第三个参数String:查询条件
  113. //第四个参数String[]:查询条件的参数
  114. //第五个参数String:对查询的结果进行分组
  115. //第六个参数String:对分组的结果进行限制
  116. //第七个参数String:对查询的结果进行排序
  117. Cursorcursor=sqliteDatabase.query("user",newString[]{"id",
  118. "name"},"id=?",newString[]{"1"},null,null,null);
  119. //将光标移动到下一行,从而判断该结果集是否还有下一条数据,如果有则返回true,没有则返回false
  120. while(cursor.moveToNext()){
  121. id=cursor.getString(cursor.getColumnIndex("id"));
  122. name=cursor.getString(cursor.getColumnIndex("name"));
  123. }
  124. System.out.println("-------------select------------");
  125. System.out.println("id:"+id);
  126. System.out.println("name:"+name);
  127. }
  128. }
  129. //deleteButton点击事件监听器
  130. classDeleteOnClickListenerimplementsOnClickListener{
  131. publicvoidonClick(Viewv){
  132. //创建DatabaseHelper对象
  133. DatabaseHelperdbHelper=newDatabaseHelper(SQLiteActivity.this,"test_yangyz_db",2);
  134. //获得可写的SQLiteDatabase对象
  135. SQLiteDatabasesqliteDatabase=dbHelper.getWritableDatabase();
  136. //调用SQLiteDatabase对象的delete方法进行删除操作
  137. //第一个参数String:表名
  138. //第二个参数String:条件语句
  139. //第三个参数String[]:条件值
  140. sqliteDatabase.delete("user","id=?",newString[]{"1"});
  141. System.out.println("----------delete----------");
  142. }
  143. }
  144. }

布局文件:

Xml代码
  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
  3. android:orientation="vertical"
  4. android:layout_width="fill_parent"
  5. android:layout_height="fill_parent"
  6. >
  7. <TextView
  8. android:layout_width="fill_parent"
  9. android:layout_height="wrap_content"
  10. android:text="@string/hello"
  11. />
  12. <Button
  13. android:id="@+id/createDatabase"
  14. android:layout_width="fill_parent"
  15. android:layout_height="wrap_content"
  16. android:text="@string/createDatabaseButton"
  17. />
  18. <Button
  19. android:id="@+id/updateDatabase"
  20. android:layout_width="fill_parent"
  21. android:layout_height="wrap_content"
  22. android:text="@string/updateDatabaseButton"
  23. />
  24. <Button
  25. android:id="@+id/insert"
  26. android:layout_width="fill_parent"
  27. android:layout_height="wrap_content"
  28. android:text="@string/insertButton"
  29. />
  30. <Button
  31. android:id="@+id/update"
  32. android:layout_width="fill_parent"
  33. android:layout_height="wrap_content"
  34. android:text="@string/updateButton"
  35. />
  36. <Button
  37. android:id="@+id/select"
  38. android:layout_width="fill_parent"
  39. android:layout_height="wrap_content"
  40. android:text="@string/selectButton"
  41. />
  42. <Button
  43. android:id="@+id/delete"
  44. android:layout_width="fill_parent"
  45. android:layout_height="wrap_content"
  46. android:text="@string/deleteButton"
  47. />
  48. </LinearLayout>

String文件:

Xml代码
  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <resources>
  3. <stringname="hello">HelloWorld,SQLiteActivity!</string>
  4. <stringname="app_name">SQLiteTest</string>
  5. <stringname="createDatabaseButton">createDatabase</string>
  6. <stringname="updateDatabaseButton">updateDatabase</string>
  7. <stringname="insertButton">insert</string>
  8. <stringname="updateButton">update</string>
  9. <stringname="selectButton">select</string>
  10. <stringname="deleteButton">delete</string>
  11. </resources>

更多相关文章

  1. mybatisplus的坑 insert标签insert into select无参数问题的解决
  2. 类和 Json对象
  3. Python技巧匿名函数、回调函数和高阶函数
  4. python list.sort()根据多个关键字排序的方法实现
  5. Android系统配置数据库注释(settings.db)
  6. android中文api(89)——ViewManager
  7. Android调用天气预报的WebService简单例子
  8. Android(安卓)Activity的启动
  9. Android中文API(144) —— JsonWriter

随机推荐

  1. Android通过TCPIP协议实现断点续传上传实
  2. Android——字符高亮显示
  3. 【Android测试工具】02. Android抓包解析
  4. Android开机自启
  5. android 的动画
  6. Android: PLEASE DO NOT USE A WAKE LOCK
  7. android emulator-5554 disconnected! Ca
  8. Android learning - Activities
  9. 移动APP自动化漏洞检测平台架构
  10. ktolin在Android中布局界面拼接