Android游戏开发之数据库SQLite 详细介绍(十七)
来源:互联网 发布:医院网络解决方案 编辑:程序博客网 时间:2024/05/22 12:14
- public class DatabaseHelper extends SQLiteOpenHelper {
- private static DatabaseHelper mInstance = null;
- /** 数据库名称 **/
- public static final String DATABASE_NAME = "xys.db";
- /** 数据库版本号 **/
- private static final int DATABASE_VERSION = 1;
- /**数据库SQL语句 添加一个表**/
- private static final String NAME_TABLE_CREATE = "create table test("
- + "_id INTEGER PRIMARY KEY AUTOINCREMENT," + "name TEXT,"+"hp INTEGER DEFAULT 100,"+ "mp INTEGER DEFAULT 100,"
- + "number INTEGER);";
- DatabaseHelper(Context context) {
- super(context, DATABASE_NAME, null, DATABASE_VERSION);
- }
- /**单例模式**/
- static synchronized DatabaseHelper getInstance(Context context) {
- if (mInstance == null) {
- mInstance = new DatabaseHelper(context);
- }
- return mInstance;
- }
- @Override
- public void onCreate(SQLiteDatabase db) {
- /**向数据中添加表**/
- db.execSQL(NAME_TABLE_CREATE);
- }
- @Override
- public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
- /**可以拿到当前数据库的版本信息 与之前数据库的版本信息 用来更新数据库**/
- }
- /**
- * 删除数据库
- * @param context
- * @return
- */
- public boolean deleteDatabase(Context context) {
- return context.deleteDatabase(DATABASE_NAME);
- }
- }
- public class NewSQLite extends Activity {
- DatabaseHelper mDbHelper = null;
- SQLiteDatabase mDb = null;
- Context mContext = null;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- setContentView(R.layout.create_sql);
- mContext = this;
- //创建DatabaseHelper对象
- mDbHelper = DatabaseHelper.getInstance(mContext);
- //调用getReadableDatabase方法如果数据库不存在 则创建 如果存在则打开
- mDb= mDbHelper.getReadableDatabase();
- Button button0 = (Button)findViewById(R.id.createDateBase);
- button0.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View arg0) {
- Toast.makeText(NewSQLite.this, "成功创建数据库", Toast.LENGTH_LONG).show();
- }
- });
- Button button1 = (Button)findViewById(R.id.deleteDateBase);
- button1.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View arg0) {
- mDbHelper = DatabaseHelper.getInstance(mContext);
- // 调用getReadableDatabase方法如果数据库不存在 则创建 如果存在则打开
- mDb = mDbHelper.getReadableDatabase();
- // 关闭数据库
- mDbHelper.close();
- // 删除数据库
- mDbHelper.deleteDatabase(mContext);
- Toast.makeText(NewSQLite.this, "成功删除数据库", Toast.LENGTH_LONG).show();
- }
- });
- super.onCreate(savedInstanceState);
- }
- }
- /**创建一张表的SQL语句**/
- private static final String NAME_TABLE_CREATE = "create table gameInfo("
- + "_id INTEGER PRIMARY KEY AUTOINCREMENT," + "name TEXT,"+ "hp INTEGER DEFAULT 100,"+ "mp INTEGER DEFAULT 100,"
- + "number INTEGER);";
- /**删除一张表的SQL语句**/
- private static final String NAME_TABLE_DELETE = "DROP TABLE gameInfo";
- mDb.execSQL(NAME_TABLE_CREATE);
以创建一张名称为gameInfo的表为例 给出代码实现
- public class NewTable extends Activity {
- DatabaseHelper mDbHelper = null;
- SQLiteDatabase mDb = null;
- Context mContext = null;
-
- /**创建一张表的SQL语句**/
- private static final String NAME_TABLE_CREATE = "create table gameInfo("
- + "_id INTEGER PRIMARY KEY AUTOINCREMENT," + "name TEXT,"+ "hp INTEGER DEFAULT 100,"+ "mp INTEGER DEFAULT 100,"
- + "number INTEGER);";
-
-
- /**删除一张表的SQL语句**/
- private static final String NAME_TABLE_DELETE = "DROP TABLE gameInfo";
-
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- setContentView(R.layout.create_table);
- mContext = this;
- mDbHelper = DatabaseHelper.getInstance(mContext);
- mDb= mDbHelper.getReadableDatabase();
-
- Button button0 = (Button)findViewById(R.id.createTable);
- button0.setOnClickListener(new OnClickListener() {
-
- @Override
- public void onClick(View arg0) {
- try {
- mDb.execSQL(NAME_TABLE_CREATE);
- Toast.makeText(NewTable.this, "成功添加数据表", Toast.LENGTH_LONG).show();
- }catch(SQLiteException e) {
- Toast.makeText(NewTable.this, "数据库中已存此表", Toast.LENGTH_LONG).show();
- }
- }
- });
- Button button1 = (Button)findViewById(R.id.deleteTable);
- button1.setOnClickListener(new OnClickListener() {
-
- @Override
- public void onClick(View arg0) {
- try {
- mDb.execSQL(NAME_TABLE_DELETE);
- Toast.makeText(NewTable.this, "成功删除数据表", Toast.LENGTH_LONG).show();
- }catch(SQLiteException e) {
- Toast.makeText(NewTable.this, "数据库中已无此表", Toast.LENGTH_LONG).show();
- }
-
- }
- });
-
-
-
- super.onCreate(savedInstanceState);
- }
-
- }
增加 删除 修改 查询 数据库中的数据
使用SQLiteDatabase对象调用 insert()方法 传入标的名称与ContentValues 添加的内容 则可以向数据库表中写入一条数据 delete ()为删除一条数据 update()为更新一条数据。
我详细说一下查找一条数据使用的方法 query 中 跟了8个参数
使用SQLiteDatabase对象调用 insert()方法 传入标的名称与ContentValues 添加的内容 则可以向数据库表中写入一条数据 delete ()为删除一条数据 update()为更新一条数据。
我详细说一下查找一条数据使用的方法 query 中 跟了8个参数
这里给出一个例子遍历Cursor的例子
- private void query(SQLiteDatabase db) {
- // 把整张表的所有数据query到cursor中
- Cursor cursor = db.query(TABLE_NAME, null, null, null, null, null, null);
- //判断cursor不为空 这个很重要
- if (cursor != null) {
- // 循环遍历cursor
- while (cursor.moveToNext()) {
- // 拿到每一行name 与hp的数值
- String name = cursor.getString(cursor.getColumnIndex("name"));
- String hp = cursor.getString(cursor.getColumnIndex("hp"));
- Log.v("info", "姓名是 " + name + "hp为 " + hp);
- }
- // 关闭
- cursor.close();
- }
- }
向大家推荐一个查看数据库的软件非常好用, 名称是SQLiteSpy.exe 如图所示 打开xys.db 文件 可以清晰的看见数据库表中储存的内容并且该软件支持执行SQL语句 可以直接在软件中操作,我给出这款软件的下载地址。
下载地址:http://download.csdn.net/source/3481140
下载地址:http://download.csdn.net/source/3481140
- public class Newdate extends Activity {
- DatabaseHelper mDbHelper = null;
- SQLiteDatabase mDb = null;
- Context mContext = null;
- /** 数据库字段 **/
- public final static String TABLE_NAME = "test";
- public final static String ID = "_id";
- public final static String NAME = "name";
- public final static String HP = "hp";
- public final static String MP = "mp";
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- setContentView(R.layout.create_date);
- mContext = this;
- // 创建DatabaseHelper对象
- mDbHelper = DatabaseHelper.getInstance(mContext);
- // 调用getReadableDatabase方法如果数据库不存在 则创建 如果存在则打开
- mDb = mDbHelper.getReadableDatabase();
- // 初始化 给数据库表写入一些信息
- for (int i = 0; i < 10; i++) {
- insert(NAME, "雨松MOMO" + i);
- }
- // 增加
- Button button0 = (Button) findViewById(R.id.add);
- button0.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View arg0) {
- insert(NAME, "新添加小可爱");
- Toast.makeText(Newdate.this, "添加一条数据名称为小可爱", Toast.LENGTH_LONG)
- .show();
- }
- });
- // 删除
- Button button1 = (Button) findViewById(R.id.delete);
- button1.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View arg0) {
- delete(ID, "1");
- Toast.makeText(Newdate.this, "删除一条_id=1的数据", Toast.LENGTH_LONG)
- .show();
- }
- });
- // 修改
- Button button2 = (Button) findViewById(R.id.modify);
- button2.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View arg0) {
- update(NAME, "雨松MOMO3", "小可爱3");
- Toast.makeText(Newdate.this, "更新名称雨松MOMO3 为小可爱3",
- Toast.LENGTH_LONG).show();
- }
- });
- // 查找
- Button button3 = (Button) findViewById(R.id.find);
- button3.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View arg0) {
- Cursor cursor = find(ID, "5");
- String name = cursor.getString(cursor.getColumnIndex(NAME));
- Toast.makeText(Newdate.this, "查找ID为5数据的名称是 " + name,
- Toast.LENGTH_LONG).show();
- }
- });
- super.onCreate(savedInstanceState);
- }
- /**
- * 插入一条数据
- *
- * @param key
- * @param date
- */
- public void insert(String key, String date) {
- ContentValues values = new ContentValues();
- values.put(key, date);
- mDb.insert(TABLE_NAME, null, values);
- }
- /**
- * 删除一掉数据
- *
- * @param key
- * @param date
- */
- public void delete(String key, String date) {
- mDb.delete(TABLE_NAME, key + "=?", new String[] { date });
- }
- /**
- * 更新一条数据
- *
- * @param key
- * @param oldDate
- * @param newDate
- */
- public void update(String key, String oldDate, String newDate) {
- ContentValues values = new ContentValues();
- values.put(key, newDate);
- mDb.update(TABLE_NAME, values, key + "=?", new String[] { oldDate });
- }
- /**
- * 查找一条数据
- *
- * @param key
- * @param date
- * @return
- */
- public Cursor find(String key, String date) {
- Cursor cursor = mDb.query(TABLE_NAME, null, key + "=?",
- new String[] { date }, null, null, null);
- if (cursor != null) {
- cursor.moveToFirst();
- }
- return cursor;
- }
- }
- public void find() {
- Cursor cursor = mDb.query(TABLE_NAME, new String[] {"name","hp"}, null,
- null, null, null, null);
- while(cursor.moveToNext()) {
- String name = cursor.getString(0);
- String hp = cursor.getString(1);
- Log.v("info", "name is "+name);
- Log.v("info", "hp is "+hp);
- }
- }
最后如果你还是觉得我写的不够详细 看的不够爽 不要紧我把源代码的下载地址贴出来 欢迎大家一起讨论学习雨松MOMO希望可以和大家一起进步。
下载地址:http://download.csdn.net/source/3495642
下载地址:http://download.csdn.net/source/3495642
0 0
- Android游戏开发之数据库SQLite 详细介绍(十七)
- Android游戏开发之数据库SQLite 详细介绍(十七) .
- Android游戏开发之数据库SQLite 详细介绍(十七)
- Android游戏开发之数据库SQLite 详细介绍(十七)
- Android游戏开发之数据库SQLite 详细介绍(十七)
- Android游戏开发之数据库SQLite 详细介绍(十七)
- Android游戏开发之数据库SQLite 详细介绍(十七)
- Android游戏开发之数据库SQLite 详细介绍(十七)
- (转)Android游戏开发之数据库SQLite 详细介绍(十七)
- Android开发之数据库SQLite 详细介绍
- Android之数据库SQLite 详细介绍
- Android SQLite 数据库详细介绍
- Android SQLite 数据库详细介绍
- Android笔记(二十七)sqlite数据库
- Android游戏开发之旅(十七) 图像渐变特效
- Android游戏开发之旅(十七) 图像渐变特效
- android之SQLite数据库介绍
- Android开发之Sqlite数据库
- 2014NEUQ图灵杯(C语言解法)
- Android SwipeRefreshLayout 官方下拉刷新控件介绍
- Android添加新版本支持包V7后自定义ActionBar左侧有空白,不能完全填充问题解决
- POJ 2533 LIS
- HEVC代码追踪(十一):运动估计/补偿之理论知识
- Android游戏开发之数据库SQLite 详细介绍(十七)
- MAT hprof 内存分析
- Android利用V4包中的SwipeRefreshLayout实现上拉加载
- C#中的String.Format介绍
- 常见Java面试题 – 第一部分:非可变性(Immutability)和对象引用(Object reference)
- codevs1048 石子归并(区间DP)
- Android软件开发之盘点所有Dialog对话框大合集(一)
- Android项目中引用到其他工程
- 修改textField默认值的文本颜色