运动会报名APP
一、Android代码建数据库
数据库——sqlite
1、sqlite数据库建表
建议先完成以下两项:
- 了解数据类型
- 了解sqlite下sql的基本语法
(1)源码
//基于SQLiteOpenHelper方法对数据库的创建与升级
//1、新建一个java类来继承SQLiteOpenHelper
public class MyData extends SQLiteOpenHelper {
public MyData(@Nullable Context context, @Nullable String name, @Nullable SQLiteDatabase.CursorFactory factory, int version) {
super(context, name, factory, version);
}
@Override
public void onCreate(SQLiteDatabase sqLiteDatabase) {
//建表 if not exists(如果表不存在)
/*用户表user
* 编号 id integer
* 用户名 user_name varchar 学号
* 密码 user_pwd varchar
* */
String table_user="user";
String user_tb="create table if not exists "+table_user+
"(id integer primary key autoincrement," +
"user_name varchar not null UNIQUE," +
"user_pwd varchar)";
sqLiteDatabase.execSQL(user_tb);
sqLiteDatabase.execSQL("insert into user values (null,'admin','123');");
/*报名表register
* 编号 id integer
* 学号 user_number varchar 外键约束references user(user_name)
* 姓名 name varchar
* 性别 sex boolean false为男 true为女
* 参选项目 item text
* */
String table_reg="register";
String reg_tb="create table if not exists "+table_user+
"(id integer primary key autoincrement," +
"user_number varchar references user(user_name)," +
"name varchar not null," +
"sex boolean not null," +
"item text not null)";
sqLiteDatabase.execSQL(reg_tb);
}
@Override
public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {
}
}
//2、使用示例
//数据库sqlite
private MyData myData;
private SQLiteDatabase db;
private final static String db_name="SportMeet.db";
openDB();
/*示例*/
//1、执行查询操作并获取结果
Cursor cursor=db.query("user",new String[]{"id","user_name","user_pwd"},null,null, null, null, null);
//2、将指针移动到第一条数据上
cursor.moveToFirst();
//3、读取数据
Log.e("onCreate: ", cursor.getString(1));
/*打开数据库openDB()如下:
public void openDB() throws SQLiteException{
myData=new MyData(this,db_name,null,1);
try {
db=myData.getWritableDatabase();
}
catch (SQLiteException exception){
db=myData.getReadableDatabase();
}
}*/
(2)效果图
2、CRUD操作(SQLiteDatabase类)
- inser
- query
- update
- delete
二、默认Toolbar的问题
1、隐去默认的toolbar
//方法一:隐藏actionbar
if (getSupportActionBar() != null) {
getSupportActionBar().hide();
}
//方法二:
//AndroidManifest.xml的activity中加入,缺点,activity整体类型发生改变
android:theme="@style/Theme.AppCompat.Light.NoActionBar"
2、设置全屏
//隐藏标题栏
getSupportActionBar().hide();
//隐藏系统状态栏
getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
3、ToolBar中menu无法同时显示图标和文字问题的解决方法
可以在 Activity 中重写onMenuOpened()方法,通过反射使 icon 和 title 同时可见。
//将如下代码复制到Activity中即可:
@Override
public boolean onMenuOpened(int featureId, Menu menu) {
if (menu != null) {
if (menu.getClass().getSimpleName().equalsIgnoreCase("MenuBuilder"))
{
try {
Method method = menu.getClass().getDeclaredMethod("setOptionalIconsVisible", Boolean.TYPE);
method.setAccessible(true);
method.invoke(menu, true);
} catch (Exception e) {
e.printStackTrace();
}
}
}
return super.onMenuOpened(featureId, menu);
}