在手机开发中SQLite的使用demo

简单的bean类

Java代码
  1. packagecom.easyway.android.sql;
  2. /**
  3. *普通JavaBean
  4. *@authorlonggangbai
  5. *
  6. */
  7. publicclassCityBean{
  8. publicstaticfinalStringID="_id";
  9. publicstaticfinalStringCITY="city";
  10. publicstaticfinalStringCODE="code";
  11. privateStringid;
  12. privateStringcity;
  13. privateStringcode;
  14. publicStringgetId(){
  15. returnid;
  16. }
  17. publicvoidsetId(Stringid){
  18. this.id=id;
  19. }
  20. publicStringgetCity(){
  21. returncity;
  22. }
  23. publicvoidsetCity(Stringcity){
  24. this.city=city;
  25. }
  26. publicStringgetCode(){
  27. returncode;
  28. }
  29. publicvoidsetCode(Stringcode){
  30. this.code=code;
  31. }
  32. }

界面展现类:

Java代码
  1. packagecom.easyway.android.sql;
  2. importjava.util.ArrayList;
  3. importjava.util.List;
  4. importandroid.app.Activity;
  5. importandroid.content.ContentValues;
  6. importandroid.database.Cursor;
  7. importandroid.database.sqlite.SQLiteDatabase;
  8. importandroid.os.Bundle;
  9. importandroid.view.View;
  10. importandroid.view.ViewGroup;
  11. importandroid.widget.AdapterView;
  12. importandroid.widget.BaseAdapter;
  13. importandroid.widget.Button;
  14. importandroid.widget.EditText;
  15. importandroid.widget.ListView;
  16. importandroid.widget.TextView;
  17. /**
  18. *
  19. *
  20. *本例实现SQLite数据库增加、删除、修改、模糊查询操作。这里不是最好的实现方法,
  21. *如想研究SQL如何封装,请详细查看SQLiteDatebase类.
  22. *查看SQL语句:Stringsql=SQLiteQueryBuilder.buildQueryString();
  23. *
  24. *
  25. *@authorlonggangbai
  26. */
  27. publicclassAndroidSQLextendsActivity{
  28. privatestaticStringDB_NAME="mycity.db";
  29. privatestaticintDB_VERSION=1;
  30. privatestaticintPOSTION;
  31. privateListViewlistview;
  32. privateCursorcursor;
  33. privateSQLiteDatabasedb;
  34. privateSQLiteHelperdbHelper;
  35. privateListAdapterlistAdapter;
  36. privateEditTextetCity;
  37. privateEditTextetCode;
  38. privateButtonbt_add;
  39. privateButtonbt_modify;
  40. privateButtonbt_query;
  41. privateList<CityBean>cityList=newArrayList<CityBean>();
  42. /**Calledwhentheactivityisfirstcreated.*/
  43. @Override
  44. publicvoidonCreate(BundlesavedInstanceState){
  45. super.onCreate(savedInstanceState);
  46. setContentView(R.layout.main);
  47. etCity=(EditText)findViewById(R.id.etCity);
  48. etCode=(EditText)findViewById(R.id.etCode);
  49. bt_add=(Button)findViewById(R.id.bt_add);
  50. bt_modify=(Button)findViewById(R.id.bt_modify);
  51. bt_query=(Button)findViewById(R.id.bt_query);
  52. try{
  53. /*初始化并创建数据库*/
  54. dbHelper=newSQLiteHelper(this,DB_NAME,null,DB_VERSION);
  55. /*创建表*/
  56. db=dbHelper.getWritableDatabase();//调用SQLiteHelper.OnCreate()
  57. /*查询表,得到cursor对象*/
  58. cursor=db.query(SQLiteHelper.TB_NAME,null,null,null,null,null,CityBean.CODE+"DESC");
  59. cursor.moveToFirst();
  60. while(!cursor.isAfterLast()&&(cursor.getString(1)!=null)){
  61. CityBeancity=newCityBean();
  62. city.setId(cursor.getString(0));
  63. city.setCity(cursor.getString(1));
  64. city.setCode(cursor.getString(2));
  65. cityList.add(city);
  66. cursor.moveToNext();
  67. }
  68. }catch(IllegalArgumentExceptione){
  69. //当用SimpleCursorAdapter装载数据时,表ID列必须是_id,否则报错column'_id'doesnotexist
  70. e.printStackTrace();
  71. //当版本变更时会调用SQLiteHelper.onUpgrade()方法重建表注:表以前数据将丢失
  72. ++DB_VERSION;
  73. dbHelper.onUpgrade(db,--DB_VERSION,DB_VERSION);
  74. //dbHelper.updateColumn(db,SQLiteHelper.ID,"_"+SQLiteHelper.ID,"integer");
  75. }
  76. listview=(ListView)findViewById(R.id.listView);
  77. listAdapter=newListAdapter();
  78. listview.setAdapter(listAdapter);
  79. listview.setOnItemClickListener(newListView.OnItemClickListener(){
  80. @Override
  81. publicvoidonItemClick(AdapterView<?>parent,Viewview,intpostion,
  82. longarg3){
  83. setSelectedValues(postion);
  84. }
  85. });
  86. /*插入表数据并ListView显示更新*/
  87. bt_add.setOnClickListener(newButton.OnClickListener(){
  88. @Override
  89. publicvoidonClick(Viewarg0){
  90. if(etCity.getText().length()>1&&etCode.getText().length()>1){
  91. ContentValuesvalues=newContentValues();
  92. values.put(CityBean.CITY,etCity.getText().toString().trim());
  93. values.put(CityBean.CODE,etCode.getText().toString().trim());
  94. //插入数据用ContentValues对象也即HashMap操作,并返回ID号
  95. LongcityID=db.insert(SQLiteHelper.TB_NAME,CityBean.ID,values);
  96. CityBeancity=newCityBean();
  97. city.setId(""+cityID);
  98. city.setCity(etCity.getText().toString().trim());
  99. city.setCode(etCode.getText().toString().trim());
  100. cityList.add(city);
  101. listview.setAdapter(newListAdapter());
  102. resetForm();
  103. }
  104. }
  105. });
  106. /*查询表,模糊条件查询*/
  107. bt_query.setOnClickListener(newButton.OnClickListener(){
  108. @Override
  109. publicvoidonClick(Viewview){
  110. cityList.removeAll(cityList);
  111. Stringsql=null;
  112. StringsqlCity=etCity.getText().length()>0?CityBean.CITY+"like'%"+etCity.getText().toString().trim()+"%'":"";
  113. StringsqlCode=etCode.getText().length()>0?CityBean.CITY+"like'%"+etCity.getText().toString().trim()+"%'":"";
  114. if((!"".equals(sqlCity))&&(!"".equals(sqlCode))){
  115. sql=sqlCity+"and"+sqlCode;
  116. }elseif(!"".equals(sqlCity)){
  117. sql=sqlCity;
  118. }elseif(!"".equals(sqlCode)){
  119. sql=sqlCode;
  120. }
  121. cursor=db.query(true,SQLiteHelper.TB_NAME,
  122. newString[]{CityBean.ID,CityBean.CITY,CityBean.CODE},
  123. sql,
  124. null,null,null,null,null);
  125. cursor.moveToFirst();
  126. while(!cursor.isAfterLast()&&(cursor.getString(1)!=null)){
  127. CityBeancity=newCityBean();
  128. city.setId(cursor.getString(0));
  129. city.setCity(cursor.getString(1));
  130. city.setCode(cursor.getString(2));
  131. cityList.add(city);
  132. cursor.moveToNext();
  133. }
  134. listview.setAdapter(newListAdapter());
  135. resetForm();
  136. }
  137. });
  138. /*修改表数据*/
  139. bt_modify.setOnClickListener(newButton.OnClickListener(){
  140. @Override
  141. publicvoidonClick(Viewarg0){
  142. ContentValuesvalues=newContentValues();
  143. values.put(CityBean.CITY,etCity.getText().toString().trim());
  144. values.put(CityBean.CODE,etCode.getText().toString().trim());
  145. db.update(SQLiteHelper.TB_NAME,values,CityBean.ID+"="+cityList.get(POSTION).getId(),null);
  146. cityList.get(POSTION).setCity(etCity.getText().toString().trim());
  147. cityList.get(POSTION).setCode(etCode.getText().toString().trim());
  148. listview.setAdapter(newListAdapter());
  149. resetForm();
  150. }
  151. });
  152. }
  153. /*设置选中ListView的值*/
  154. publicvoidsetSelectedValues(intpostion){
  155. POSTION=postion;
  156. etCity.setText(cityList.get(postion).getCity());
  157. etCode.setText(cityList.get(postion).getCode());
  158. }
  159. /*重值form*/
  160. publicvoidresetForm(){
  161. etCity.setText("");
  162. etCode.setText("");
  163. }
  164. @Override
  165. protectedvoidonDestroy(){
  166. db.delete(SQLiteHelper.TB_NAME,null,null);
  167. super.onDestroy();
  168. }
  169. privateclassListAdapterextendsBaseAdapter{
  170. publicListAdapter(){
  171. super();
  172. }
  173. @Override
  174. publicintgetCount(){
  175. returncityList.size();
  176. }
  177. @Override
  178. publicObjectgetItem(intpostion){
  179. returnpostion;
  180. }
  181. @Override
  182. publiclonggetItemId(intpostion){
  183. returnpostion;
  184. }
  185. @Override
  186. publicViewgetView(finalintpostion,Viewview,ViewGroupparent){
  187. view=getLayoutInflater().inflate(R.layout.listview,null);
  188. TextViewtv=(TextView)view.findViewById(R.id.tvCity);
  189. tv.setText(""+cityList.get(postion).getCity());
  190. TextViewbu=(TextView)view.findViewById(R.id.btRemove);
  191. bu.setText(R.string.delete);
  192. bu.setId(Integer.parseInt(cityList.get(postion).getId()));
  193. /*删除表数据*/
  194. bu.setOnClickListener(newButton.OnClickListener(){
  195. @Override
  196. publicvoidonClick(Viewview){
  197. try{
  198. db.delete(SQLiteHelper.TB_NAME,CityBean.ID+"="+view.getId(),null);
  199. cityList.remove(postion);
  200. listview.setAdapter(newListAdapter());
  201. }catch(Exceptione){
  202. e.printStackTrace();
  203. }
  204. }
  205. });
  206. returnview;
  207. }
  208. }
  209. }

SQLite实现类:

Java代码
  1. packagecom.easyway.android.sql;
  2. importandroid.content.Context;
  3. importandroid.database.sqlite.SQLiteDatabase;
  4. importandroid.database.sqlite.SQLiteOpenHelper;
  5. importandroid.database.sqlite.SQLiteDatabase.CursorFactory;
  6. /**
  7. *实现对表的创建、更新、变更列名操作
  8. *
  9. *在Android中针对少量数据的操作在SQLite操作实现相关功能功能
  10. *,但是必须继承SQLiteOpenHelper,实现相关的功能。
  11. *
  12. *
  13. *@authorlonggangbai
  14. *
  15. */
  16. publicclassSQLiteHelperextendsSQLiteOpenHelper{
  17. publicstaticfinalStringTB_NAME="citys";
  18. publicSQLiteHelper(Contextcontext,Stringname,CursorFactoryfactory,
  19. intversion){
  20. super(context,name,factory,version);
  21. }
  22. /**
  23. *创建新表
  24. */
  25. @Override
  26. publicvoidonCreate(SQLiteDatabasedb){
  27. db.execSQL("CREATETABLEIFNOTEXISTS"+
  28. TB_NAME+"("+
  29. CityBean.ID+"integerprimarykey,"+
  30. CityBean.CITY+"varchar,"+
  31. CityBean.CODE+"integer"+
  32. ")");
  33. }
  34. /**
  35. *当检测与前一次创建数据库版本不一样时,先删除表再创建新表
  36. */
  37. @Override
  38. publicvoidonUpgrade(SQLiteDatabasedb,intoldVersion,intnewVersion){
  39. db.execSQL("DROPTABLEIFEXISTS"+TB_NAME);
  40. onCreate(db);
  41. }
  42. /**
  43. *变更列名
  44. *@paramdb
  45. *@paramoldColumn
  46. *@paramnewColumn
  47. *@paramtypeColumn
  48. */
  49. publicvoidupdateColumn(SQLiteDatabasedb,StringoldColumn,StringnewColumn,StringtypeColumn){
  50. try{
  51. db.execSQL("ALTERTABLE"+
  52. TB_NAME+"CHANGE"+
  53. oldColumn+""+newColumn+
  54. ""+typeColumn
  55. );
  56. }catch(Exceptione){
  57. e.printStackTrace();
  58. }
  59. }
  60. }

  • AndroidSQL.rar (90.7 KB)

更多相关文章

  1. Android(安卓)DataBinding ViewPage + Fragment 封装
  2. android 网络连接 HttpGet HttpPost方法
  3. 关于 android AES 部分机器 javax.crypto.BadPaddingException:
  4. Android添加room依赖的正确姿势(附带完整流程)
  5. Android(安卓)强制竖屏
  6. android 传递图片和图片与byte的转换
  7. 收集到的Android开源代码
  8. Android(安卓)JNI技术, NDK开发
  9. Android(安卓)-- 跨应用启动Service

随机推荐

  1. RMS认为Android没有尊重用户自由
  2. android 移动View的方法汇
  3. [Android] [ANR的原理、分析、实战] 【转
  4. Android(安卓)Jetpack之Navigation
  5. Android之网络请求1————HTTP协议
  6. 通信之进程间通信-AIDL
  7. android aidl 使用实例
  8. [置顶] Android拼图游戏开发全纪录1
  9. Android常用权限permission列表摘录
  10. Win8/Android双系统 华硕Win8平板曝光