今天的计划是学习四大组件的广播,但是感觉和我们要做的这个项目关系不大。
研究了安卓的数据库,自带Sqlite,但是查看数据库的数据好麻烦,准备明天看看安卓中如何使用mysql数据库
Sqlite数据库的使用
保存常量值、
Constants.java
public class Constants { //数据库名称是常量 //变量名大写 ctrl+shift u public static final String DATABASE_NAME="testdb"; public static final int VERSION_CODE=3; public static final String TABLE_NAME="employee"; }
与创建数据库有关,其中要注意app的版本号,算是一种标识吧
需要掌握如何连接SQlite数据库(具体的构造方法),理解SQlite数据库的创建和回调的使用
public class DatabaseHelper extends SQLiteOpenHelper { private static final String TAG="DatabaseHelper"; //上下文,数据库名称,游标工厂,版本号 public DatabaseHelper(@Nullable Context context) { super(context, Constants.DATABASE_NAME, null, Constants.VERSION_CODE); } @Override public void onCreate(SQLiteDatabase db) { //创建时的回调 //第一次创建被调用 Log.d(TAG,"创建数据库..."); //创建字段 //create table table_name(_id integer,name varchar,age Integer,salary integer) //注意空格,生成正确的sql语句 String sql="create table " +Constants.TABLE_NAME+" (_id integer,name varchar,age Integer,salary integer)"; db.execSQL(sql); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { //升级数据库时的回调 //是否升级和数据库版本号有关 Log.d(TAG,"升级数据库..."); //添加字段 //需要改变版本 String sql; //db.execSQL(sql); switch (oldVersion) { case 1: //添加两个字段 sql = "alter table " + Constants.TABLE_NAME + " add phone integer,address varchar "; db.execSQL(sql); break; case 2: //添加address sql = "alter table " + Constants.TABLE_NAME + " add address varchar"; db.execSQL(sql); break; case 3: sql = "alter table " + Constants.TABLE_NAME + " add phone integer"; db.execSQL(sql); break; } } }
操作表中的数据Dao.java
需要掌握一些操作数据库的API
public class Dao { private final DatabaseHelper mHelper; private static final String TAG="Dao"; public Dao(Context con) { mHelper = new DatabaseHelper(con); } public void insert() { SQLiteDatabase db=mHelper.getWritableDatabase(); /* String sql="insert into "+Constants.TABLE_NAME+" (_id,name,age,salary,phone,address) values (?,?,?,?,?,?)"; db.execSQL(sql,new Object[]{1,"Bill",60,100,110,"USA"});*/ //利用api ContentValues values=new ContentValues(); values.put("_id",2); values.put("name","piggo"); values.put("age",50); values.put("salary" ,1); values.put("phone",1290); values.put("address","USA"); db.insert(Constants.TABLE_NAME,null,values); db.close(); } public void delete() { SQLiteDatabase db=mHelper.getWritableDatabase(); /* String sql="delete from "+Constants.TABLE_NAME+" where age = 100"; db.execSQL(sql);*/ int result= db.delete(Constants.TABLE_NAME,null,null); Log.d(TAG,"-------"+result); db.close(); } public void update() { SQLiteDatabase db=mHelper.getWritableDatabase(); /* String sql="update "+Constants.TABLE_NAME+" set salary = 2 where age = 100"; db.execSQL(sql);*/ ContentValues values=new ContentValues(); //放入要修改的数 values.put("phone",122456); //修改所有的 db.update(Constants.TABLE_NAME,values,null,null); db.close(); } public void query() { SQLiteDatabase db=mHelper.getWritableDatabase(); /* String sql="select *from "+Constants.TABLE_NAME; //游标 Cursor cusor=db.rawQuery(sql,null); //遍历 while(cusor.moveToNext()) { int index=cusor.getColumnIndex("name"); String name=cusor.getString(index); Log.d(TAG,"name==="+name); } cusor.close();*/ // Cursor cusor=db.query(Constants.TABLE_NAME,null,null,null,null,null,null); while(cusor.moveToNext()) { int id=cusor.getInt(0); String name=cusor.getString(1); Log.d(TAG,"id==="+id+name); } cusor.close(); db.close(); } }
MainActivity
public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //创建数据库 DatabaseHelper helper=new DatabaseHelper(this); helper.getWritableDatabase(); } }