下面看最重要的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. mybatisplus的坑 insert标签insert into select无参数问题的解决
  2. python起点网月票榜字体反爬案例
  3. Android(安卓)Bundle类
  4. android数据库操作(二)
  5. Android的NDK开发(3)————JNI数据类型的详解
  6. Android之断点续传下载
  7. android SQLite
  8. Android如何导入已有的外部数据库
  9. SQlite Android(安卓)数据库应用程序系统

随机推荐

  1. Android(安卓)Drawable、Bitmap、byte[]
  2. 第一个Android登录页面 | HTTP 请求验证
  3. Android获取有线和无线(wifi)的IP地址
  4. Android(安卓)Canvas
  5. android 将bitmap缓存到本地
  6. Android获取apk的版本及包名等信息
  7. Android(安卓)自定义Progress Bar
  8. android创建自定义对话框
  9. Android(安卓)获得可用摄像头id
  10. Android的报错信息at com.android.ddmlib