您的位置:首页 > 数据库

安卓SQLite的练习

2016-01-03 11:51 274 查看
在学习了安卓内置的数据库之后极客班的老师布置了如下作业。

练习使用SQLite:
a)  做一个登录界面,登录字段有用户名、密码以及是否登录中的状态
b)  模拟登录成功后,有退出按钮,将登录的用户名及登录状态写入数据库
c)  下一次登录时,显示上一次登录的用户名
d)  保存所有用户登录的历史,重复的不保存
e)  当点击退出时,将当前用户登录状态清除

主要想法就是在在输入用户名和密码时显示未登录状态,在点击登录按钮后将用户名和密码保存进SQLite数据库,显示已登录状态,在数据保存之前先根据用户名进行查找,如果用户名已经存在就不进行保存。在点击登出按钮之后显示未登录状态。

话不多说,开始上代码。
首先是创建数据库


public class LoginSQL extends SQLiteOpenHelper {

public static final String NAME = "name";
//在这里使用一个自增长的主键来排序,一个唯一性的用户名来避免重复数据,用一个整形来表示登录状态
public static final String CREATE_LOGIN = "create table login("+"id integer primary key autoincrement,"
+"name text unique key ,"+"password text,"+"login integer)";

//    private Context mContext;

public LoginSQL(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
super(context, name, factory, version);
//        mContext = context;
}

@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(CREATE_LOGIN);
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

}
}


然后是登录页面的代码


public class MainActivity extends AppCompatActivity {

private Button loginButton;

private TextView showLogin;

private LoginSQL dbHelper;

private EditText userName;

private EditText passWord;

private String username;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
dbHelper = new LoginSQL(this,"Login.db",null,1);
userName = (EditText) findViewById(R.id.editText);
passWord = (EditText) findViewById(R.id.editText2);
showLogin = (TextView) findViewById(R.id.show_the_login);

//通过查找上次登录的记录来显示上次登录的用户名
SQLiteDatabase db = dbHelper.getWritableDatabase();
Cursor cursor =db.query("login",null,null,null,null,null,null);
if(cursor.moveToLast()){
username = cursor.getString(cursor.getColumnIndexOrThrow(dbHelper.NAME));
}

userName.setText(username);
showLogin.setText("未登录");
//点击登录按钮之后将用户名和密码保存,用1来代表已登录的状态
loginButton = (Button) findViewById(R.id.login_button);
loginButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
showLogin.setText("登录中");
SQLiteDatabase db = dbHelper.getWritableDatabase();
ContentValues values = new ContentValues();

values.put("name",String.valueOf(userName.getText()));
values.put("password", String.valueOf(passWord.getText()));
values.put("login", 1);
long trueorfalse = db.insert("login", null, values);
if (trueorfalse != -1){
Toast.makeText(MainActivity.this,"插入成功",Toast.LENGTH_SHORT).show();
}

//接着跳入已经登录后的界面
Intent intent = new Intent(MainActivity.this,Main2Activity.class);
startActivity(intent);
}
});

}

}


接着是登录后的界面的代码


public class Main2Activity extends AppCompatActivity {

//在当前页面中有text显示已登录,有一个登出按钮
private LoginSQL dbHelper;
private Button logOut;
private TextView hello;
private String username;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
dbHelper = new LoginSQL(this,"Login.db",null,1);
hello = (TextView) findViewById(R.id.text_view);
logOut = (Button) findViewById(R.id.logout_b
4000
utton);
logOut.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//点击登录按钮后,将表示登录状态的整形变为0,以表示未登录状态
SQLiteDatabase db = dbHelper.getWritableDatabase();
Cursor cursor =db.query("login", null, null, null, null, null, null);
if(cursor.moveToFirst()){
username = cursor.getString(cursor.getColumnIndexOrThrow(dbHelper.NAME));
}
ContentValues values = new ContentValues();
values.put("login", 0);
db.update("login", values, "name = ?", new String[]{username});
Intent intent = new Intent(Main2Activity.this,MainActivity.class);
startActivity(intent);
}
});
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: