下面看最重要的MainActivity中的代码:

http://tech.cncms.com/shouji/android/113185_4.html
package com.himi;import java.io.File;import java.io.IOException;import android.app.Activity;import android.content.ContentValues;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;import android.os.Bundle;import android.view.View;import android.view.Window;import android.view.WindowManager;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.TextView;// ------------第三种保存方式--------《SQLite》---------/*** @author Himi* @保存方式:SQLite 轻量级数据库、* @优点: 可以将自己的数据存储到文件系统或者数据库当中, 也可以将自己的数据存* 储到SQLite数据库当中,还可以存到SD卡中* @注意1:数据库对于一个游戏(一个应用)来说是私有的,并且在一个游戏当中,* 数据库的名字也是唯一的。* @注意2 apk中创建的数据库外部的进程是没有权限去读/写的,* 我们需要把数据库文件创建到sdcard上可以解决类似问题.* @注意3 当你删除id靠前的数据或者全部删除数据的时候,SQLite不会自动排序,* 也就是说再添加数据的时候你不指定id那么SQLite默认还是在原有id最后添加一条新数据* @注意4 android 中 的SQLite 语法区分大小写的!!!!!这点要注意!* String UPDATA_DATA = "UPDATE himi SET text='通过SQL语句来修改数据' WHERE id=1";* 千万 不能可以写成* String UPDATA_DATA = "updata himi set text='通过SQL语句来修改数据' where id=1";*/public class MainActivity extends Activity implements OnClickListener {private Button btn_addOne, btn_deleteone, btn_check, btn_deleteTable,btn_edit, btn_newTable;private TextView tv;private MySQLiteOpenHelper myOpenHelper;// 创建一个继承SQLiteOpenHelper类实例private SQLiteDatabase mysql ;//---------------以下两个成员变量是针对在SD卡中存储数据库文件使用// private File path = new File("/sdcard/himi");// 创建目录// private File f = new File("/sdcard/himi/himi.db");// 创建文件@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);this.requestWindowFeature(Window.FEATURE_NO_TITLE);setContentView(R.layout.main);tv = (TextView) findViewById(R.id.tv_title);btn_addOne = (Button) findViewById(R.id.sql_addOne);btn_check = (Button) findViewById(R.id.sql_check);btn_deleteone = (Button) findViewById(R.id.sql_deleteOne);btn_deleteTable = (Button) findViewById(R.id.sql_deleteTable);btn_newTable = (Button) findViewById(R.id.sql_newTable);btn_edit = (Button) findViewById(R.id.sql_edit);btn_edit.setOnClickListener(this);btn_addOne.setOnClickListener(this);btn_check.setOnClickListener(this);btn_deleteone.setOnClickListener(this);btn_deleteTable.setOnClickListener(this);btn_newTable.setOnClickListener(this);myOpenHelper = new MySQLiteOpenHelper(this);// 实例一个数据库辅助器//备注1 ----如果你使用的是将数据库的文件创建在SD卡中,那么创建数据库mysql如下操作:// if (!path.exists()) {// 目录存在返回false// path.mkdirs();// 创建一个目录// }// if (!f.exists()) {// 文件存在返回false// try {// f.createNewFile();//创建文件// } catch (IOException e) {// // TODO Auto-generated catch block// e.printStackTrace();// }// }}@Overridepublic void onClick(View v) {try {//备注2----如果你使用的是将数据库的文件创建在SD卡中,那么创建数据库mysql如下操作:// mysql = SQLiteDatabase.openOrCreateDatabase(f, null);//备注3--- 如果想把数据库文件默认放在系统中,那么创建数据库mysql如下操作:mysql = myOpenHelper.getWritableDatabase(); // 实例数据库if (v == btn_addOne) {// 添加数据// ---------------------- 读写句柄来插入---------// ContentValues 其实就是一个哈希表HashMap, key值是字段名称,//Value值是字段的值。然后 通过 ContentValues 的 put 方法就可以//把数据放到ContentValues中,然后插入到表中去!ContentValues cv = new ContentValues();cv.put(MySQLiteOpenHelper.TEXT, "测试新的数据");mysql.insert(MySQLiteOpenHelper.TABLE_NAME, null, cv);// inser() 第一个参数 标识需要插入操作的表名// 第二个参数 :默认传null即可// 第三个是插入的数据// ---------------------- SQL语句插入--------------// String INSERT_DATA =// "INSERT INTO himi (id,text) values (1, '通过SQL语句插入')";// db.execSQL(INSERT_DATA);tv.setText("添加数据成功!点击查看数据库查询");} else if (v == btn_deleteone) {// 删除数据// ---------------------- 读写句柄来删除mysql.delete("himi", MySQLiteOpenHelper.ID + "=1", null);// 第一个参数 需要操作的表名// 第二个参数为 id+操作的下标 如果这里我们传入null,表示全部删除// 第三个参数默认传null即可// ----------------------- SQL语句来删除// String DELETE_DATA = "DELETE FROM himi WHERE id=1";// db.execSQL(DELETE_DATA);tv.setText("删除数据成功!点击查看数据库查询");} else if (v == btn_check) {// 遍历数据//备注4------Cursor cur = mysql.rawQuery("SELECT * FROM "+ MySQLiteOpenHelper.TABLE_NAME, null);if (cur != null) {String temp = "";int i = 0;while (cur.moveToNext()) {//直到返回false说明表中到了数据末尾temp += cur.getString(0);// 参数0 指的是列的下标,这里的0指的是id列temp += cur.getString(1);// 这里的0相对于当前应该是咱们的text列了i++;temp += " "; // 这里是我整理显示格式 ,呵呵~if (i % 3 == 0) // 这里是我整理显示格式 ,呵呵~temp += " ";// 这里是我整理显示格式 ,呵呵~}tv.setText(temp);}} else if (v == btn_edit) {// 修改数据// ------------------------句柄方式来修改 -------------ContentValues cv = new ContentValues();cv.put(MySQLiteOpenHelper.TEXT, "修改后的数据");mysql.update("himi", cv, "id " + "=" + Integer.toString(3), null);// ------------------------SQL语句来修改 -------------// String UPDATA_DATA =// "UPDATE himi SET text='通过SQL语句来修改数据' WHERE id=1";// db.execSQL(UPDATA_DATA);tv.setText("修改数据成功!点击查看数据库查询");} else if (v == btn_deleteTable) {// 删除表mysql.execSQL("DROP TABLE himi");tv.setText("删除表成功!点击查看数据库查询");} else if (v == btn_newTable) {// 新建表String TABLE_NAME = "himi";String ID = "id";String TEXT = "text";String str_sql2 = "CREATE TABLE " + TABLE_NAME + "(" + ID+ " INTEGER PRIMARY KEY AUTOINCREMENT," + TEXT+ " text );";mysql.execSQL(str_sql2);tv.setText("新建表成功!点击查看数据库查询");}// 删除数据库:// this.deleteDatabase("himi.db");} catch (Exception e) {tv.setText("操作失败!");} finally {// 如果try中异常,也要对数据库进行关闭mysql.close();}}}

以上代码中我们实现了两种存储方式:

一种存储默认系统路径/data-data-com.himi-databases下,另外一种则是保存在了/sdcard-himi下,生成数据库文件himi.db

更多相关文章

  1. android数据库操作(二)
  2. Android的NDK开发(3)————JNI数据类型的详解
  3. Android如何导入已有的外部数据库
  4. SQlite Android 数据库应用程序系统
  5. android 通知 手机 媒体 数据库 更新
  6. 获得android下面,所有的数据库
  7. Android activity之间传递数据
  8. 如何android多Activity间共享数据 (extends Application)
  9. android的数据库API操作

随机推荐

  1. Android核心分析 --分析方法论探讨之设计
  2. 物联网江湖 第二回- 列王的纷争 谷歌的利
  3. 最新android studio注意事项打不开等问题
  4. android.webkit.WebView 体验1: 使用html
  5. VisionMobile:移动平台生态系统冲突报告(
  6. Android(安卓)Fragment完全解析,关于碎片
  7. 第24章、OnLongClickListener长按事件(从
  8. Android软键盘弹起遮挡h5页面解决方法
  9. [转] android 中 任务、进程和线程的区别
  10. 最新消息:Android 4.0新增功能