【发布时间】:2017-01-11 04:50:54
【问题描述】:
我正在尝试创建一个基于 SQLite 数据库执行基本注册和登录功能的应用程序。
如何检查用户是否已经存在?我在这里尝试的是,如果我们尝试添加重复的用户,它应该发送一条消息“用户已经退出”
我的代码:
final SQLiteDatabase database = this.openOrCreateDatabase("Users", MODE_PRIVATE, null);
database.execSQL("CREATE TABLE IF NOT EXISTS users (uname VARCHAR UNIQUE, pword VARCHAR UNIQUE)");
//database.execSQL("CREATE UNIQUE INDEX idx_something ON users (uname, pword)");
signUp.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String username1 = userName.getText().toString();
String password1 = passWord.getText().toString();
if (username1 != null && !username1.trim().isEmpty() && password1 != null && !password1.trim().isEmpty()) {
try {
database.execSQL("INSERT OR REPLACE INTO users(uname, pword) VALUES('"+username1+"', '"+password1+"')");
} catch (Exception e) {
e.printStackTrace();
}
Toast.makeText(getApplicationContext(), passWord.getText().toString(), Toast.LENGTH_LONG).show();
} else {
Toast.makeText(getApplicationContext(), "Please enter details", Toast.LENGTH_LONG).show();
}
}
});
logIn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(MainActivity.this, secondscreen.class);
try {
Cursor c = database.rawQuery("SELECT * FROM users", null);
int unameIndex = c.getColumnIndex("uname");
int pwordIndex = c.getColumnIndex("pword");
c.moveToFirst();
while (c != null) {
{
String savedUname = c.getString(unameIndex);
String savedPword = c.getString(pwordIndex);
Log.i("Table Content:",savedPword.toString()+savedUname.toString());
if (savedUname.equals(userName.getText().toString())) {
if (savedPword.equals(passWord.getText().toString())) {
intent.setAction(Intent.ACTION_VIEW);
startActivity(intent);
} else {
Toast.makeText(getApplicationContext(), " Incorrect username or password ", Toast.LENGTH_LONG).show();
}
}
}
c.moveToNext();
}
}catch (Exception e){
e.printStackTrace();
}
}
});
【问题讨论】:
-
感谢您的回复@VishalThakkar,但它不适用于我的情况,请您看看我的代码
-
你能把 varchar 替换成文本吗?varchar 不是 sqlite 的类型,看这个sqlite.org/datatype3.html
-
是的,但不工作@VishalThakkar