包db创建类DatabaseHelper
1 package com.example.sqlgameplayer.db;
2
3 import android.content.Context;
4 import android.database.sqlite.SQLiteDatabase;
5 import android.database.sqlite.SQLiteOpenHelper;
6
7 /**
8 * Created by 徐伟杰 on 2016/9/25.
9 */
10
11 public class DatabaseHelper extends SQLiteOpenHelper {
12 private static final String DB_NAME="game.db";//数据库名字
13 private static final int VERSION=1;//版本号
14 private static final String CREATE_TABLE_PLAYER="CREATE TABLE IF NOT EXISTS player_table("+//如果没有表单创建表单player_table
15 "_id INTEGER PRIMARY KEY AUTOINCREMENT,"+//id,主键自动增加
16 "player TEXT,score INTEGER,level INTEGER)";//数据的类型
17
18 private static final String DROP_TABLE_PLAYER="DROP TABLE IF EXISTS player_table";
19 public DatabaseHelper(Context context) {
20 //context,数据库名字,游标,版本号
21 super(context, DB_NAME, null, VERSION);
22 }
23
24 @Override
25 public void onCreate(SQLiteDatabase sqLiteDatabase) {
26 sqLiteDatabase.execSQL(CREATE_TABLE_PLAYER);
27 }
28 //更新
29 @Override
30 public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {//i代表老版本,i1代表新版本
31 sqLiteDatabase.execSQL(DROP_TABLE_PLAYER);
32 sqLiteDatabase.execSQL(CREATE_TABLE_PLAYER);
33 //先删除后创建
34 }
35 }
db包创建类DatabaseAdapter
1 package com.example.sqlgameplayer.db;
2
3 import android.content.ContentValues;
4 import android.content.Context;
5 import android.database.Cursor;
6 import android.database.sqlite.SQLiteDatabase;
7
8
9 import com.example.sqlgameplayer.entity.GamePlayer;
10
11 import java.util.ArrayList;
12
13 /**
14 * Created by 徐伟杰 on 2016/9/25.
15 * 数据库的工具类
16 */
17
18 public class DatabaseAdapter {
19 private DatabaseHelper dbHelper;
20 public DatabaseAdapter(Context context){dbHelper=new DatabaseHelper(context);}
21 //添加操作
22 public void add(GamePlayer gamePlayer){
23 //获取可写的数据库
24 SQLiteDatabase db=dbHelper.getWritableDatabase();
25 ContentValues values=new ContentValues();
26 values.put(GameMetaData.GamePlayer.PLAYER,gamePlayer.getPlayer());
27 values.put(GameMetaData.GamePlayer.SCORE,gamePlayer.getScore());
28 values.put(GameMetaData.GamePlayer.LEVEL,gamePlayer.getLevel());
29 db.insert(GameMetaData.GamePlayer.TABLE_NAME,null,values);
30 db.close();
31 }
32 //caozuo.html" target="_blank">删除操作(实际开发应用中是不会删除的,而是隐藏)
33 public void delete(int id){
34 SQLiteDatabase db=dbHelper.getWritableDatabase();
35 String whereClause=GameMetaData.GamePlayer._ID+"=?";
36 String[] whereArgs={String.valueOf(id)};
37 //表名,条件,条件的值
38 db.delete(GameMetaData.GamePlayer.TABLE_NAME,whereClause,whereArgs);
39 db.close();
40 }
41 //更新操作
42 public void update(GamePlayer gamePlayer){
43 SQLiteDatabase db=dbHelper.getWritableDatabase();
44 ContentValues values=new ContentValues();
45 values.put(GameMetaData.GamePlayer.PLAYER,gamePlayer.getPlayer());
46 values.put(GameMetaData.GamePlayer.SCORE,gamePlayer.getScore());
47 values.put(GameMetaData.GamePlayer.LEVEL,gamePlayer.getLevel());
48 String whereClause=GameMetaData.GamePlayer._ID+"=?";
49 String[] whereArgs={String.valueOf(gamePlayer.getId())};
50 db.update(GameMetaData.GamePlayer.TABLE_NAME,values,whereClause,whereArgs);
51 db.close();
52 }
53 //查询
54 public GamePlayer findById(int id) {
55 //获取只读
56 SQLiteDatabase db=dbHelper.getReadableDatabase();
57 //属性:是否可重复,表名,读多少个列表(这里数据比较少所以填null),条件,条件值,分组,排序等等
58 Cursor c=db.query(true, GameMetaData.GamePlayer.TABLE_NAME,null, GameMetaData.GamePlayer._ID+"=?",new String[]{String.valueOf(id)},null,null,null,null);
59 GamePlayer gamePlayer=null;
60 if(c.moveToNext()) {
61 gamePlayer=new GamePlayer();
62 gamePlayer.setId(c.getInt(c.getColumnIndexOrThrow(GameMetaData.GamePlayer._ID)));
63 gamePlayer.setPlayer(c.getString(c.getColumnIndexOrThrow(GameMetaData.GamePlayer.PLAYER)));
64 gamePlayer.setScore(c.getInt(c.getColumnIndexOrThrow(GameMetaData.GamePlayer.SCORE)));
65 gamePlayer.setLevel(c.getInt(c.getColumnIndexOrThrow(GameMetaData.GamePlayer.LEVEL)));
66 }
67 c.close();
68 db.close();
69
70 return gamePlayer;
71 }
72 //查询所有
73 public ArrayList<GamePlayer> findAll(){
74 SQLiteDatabase db=dbHelper.getReadableDatabase();
75 //收集 _id,player,score,level(注意这里最好不要使用*号,回影响性能)从paly_table 排序通过score 降序
76 String sql="select _id,player,score,level from player_table order by score desc";
77 Cursor c=db.rawQuery(sql,null);
78 ArrayList<GamePlayer> gamePlayers=new ArrayList<>();
79 GamePlayer gamePlayer=null;
80 while (c.moveToNext()){
81 gamePlayer=new GamePlayer();
82 gamePlayer.setId(c.getInt(c.getColumnIndexOrThrow(GameMetaData.GamePlayer._ID)));
83 gamePlayer.setPlayer(c.getString(c.getColumnIndexOrThrow(GameMetaData.GamePlayer.PLAYER)));
84 gamePlayer.setScore(c.getInt(c.getColumnIndexOrThrow(GameMetaData.GamePlayer.SCORE)));
85 gamePlayer.setLevel(c.getInt(c.getColumnIndexOrThrow(GameMetaData.GamePlayer.LEVEL)));
86 gamePlayers.add(gamePlayer);
87 }
88 c.close();
89 db.close();
90 return gamePlayers;
91 }
92 //获取总记录数
93 public int getCount(){
94 int count=0;
95 String sql="select count(_id) from player_table";
96 SQLiteDatabase db=dbHelper.getReadableDatabase();
97 Cursor c=db.rawQuery(sql,null);
98 c.moveToFirst();
99 count=c.getInt(0);
100 c.close();
101 db.close();
102 return count;
103 }
104 }