android用户登录注册界面代码并连接数据库
时间: 2023-12-27 08:03:10 浏览: 18
以下是一个简单的 Android 用户登录/注册界面代码和连接数据库的示例:
1. 创建一个名为 "User" 的 Java 类,表示用户实体
```java
public class User {
private int id;
private String username;
private String password;
public User(int id, String username, String password) {
this.id = id;
this.username = username;
this.password = password;
}
// getter and setter methods
}
```
2. 创建一个名为 "DatabaseHelper" 的 Java 类,用于连接数据库
```java
public class DatabaseHelper extends SQLiteOpenHelper {
private static final String DATABASE_NAME = "users.db";
private static final int DATABASE_VERSION = 1;
private static final String TABLE_USERS = "users";
private static final String COLUMN_ID = "id";
private static final String COLUMN_USERNAME = "username";
private static final String COLUMN_PASSWORD = "password";
public DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
String CREATE_USERS_TABLE = "CREATE TABLE " + TABLE_USERS +
"(" +
COLUMN_ID + " INTEGER PRIMARY KEY," +
COLUMN_USERNAME + " TEXT," +
COLUMN_PASSWORD + " TEXT" +
")";
db.execSQL(CREATE_USERS_TABLE);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// Drop older table if existed
db.execSQL("DROP TABLE IF EXISTS " + TABLE_USERS);
// Create tables again
onCreate(db);
}
public long addUser(User user) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(COLUMN_USERNAME, user.getUsername());
values.put(COLUMN_PASSWORD, user.getPassword());
long id = db.insert(TABLE_USERS, null, values);
db.close();
return id;
}
public User getUser(String username) {
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.query(TABLE_USERS,
new String[] { COLUMN_ID, COLUMN_USERNAME, COLUMN_PASSWORD },
COLUMN_USERNAME + "=?",
new String[] { username },
null, null, null, null);
if (cursor != null)
cursor.moveToFirst();
User user = new User(
Integer.parseInt(cursor.getString(0)),
cursor.getString(1),
cursor.getString(2)
);
cursor.close();
db.close();
return user;
}
}
```
3. 创建一个名为 "LoginActivity" 的 Java 类,用于显示登录界面
```java
public class LoginActivity extends AppCompatActivity {
private EditText etUsername, etPassword;
private Button btnLogin, btnRegister;
private DatabaseHelper db;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
etUsername = findViewById(R.id.etUsername);
etPassword = findViewById(R.id.etPassword);
btnLogin = findViewById(R.id.btnLogin);
btnRegister = findViewById(R.id.btnRegister);
db = new DatabaseHelper(this);
btnLogin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String username = etUsername.getText().toString().trim();
String password = etPassword.getText().toString().trim();
User user = db.getUser(username);
if (user != null && user.getPassword().equals(password)) {
// Login successful, start new activity
Intent intent = new Intent(LoginActivity.this, MainActivity.class);
startActivity(intent);
} else {
Toast.makeText(LoginActivity.this, "Invalid username or password", Toast.LENGTH_SHORT).show();
}
}
});
btnRegister.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(LoginActivity.this, RegisterActivity.class);
startActivity(intent);
}
});
}
}
```
4. 创建一个名为 "RegisterActivity" 的 Java 类,用于显示注册界面
```java
public class RegisterActivity extends AppCompatActivity {
private EditText etUsername, etPassword;
private Button btnRegister;
private DatabaseHelper db;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_register);
etUsername = findViewById(R.id.etUsername);
etPassword = findViewById(R.id.etPassword);
btnRegister = findViewById(R.id.btnRegister);
db = new DatabaseHelper(this);
btnRegister.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String username = etUsername.getText().toString().trim();
String password = etPassword.getText().toString().trim();
User user = new User(0, username, password);
long id = db.addUser(user);
if (id > 0) {
Toast.makeText(RegisterActivity.this, "Registration successful", Toast.LENGTH_SHORT).show();
Intent intent = new Intent(RegisterActivity.this, LoginActivity.class);
startActivity(intent);
} else {
Toast.makeText(RegisterActivity.this, "Registration failed", Toast.LENGTH_SHORT).show();
}
}
});
}
}
```
5. 创建两个 XML 布局文件,分别为 "activity_login.xml" 和 "activity_register.xml",分别用于显示登录和注册界面
```xml
<!-- activity_login.xml -->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="vertical"
android:padding="16dp">
<EditText
android:id="@+id/etUsername"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Username" />
<EditText
android:id="@+id/etPassword"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Password"
android:inputType="textPassword" />
<Button
android:id="@+id/btnLogin"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Login" />
<Button
android:id="@+id/btnRegister"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Register" />
</LinearLayout>
```
```xml
<!-- activity_register.xml -->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="vertical"
android:padding="16dp">
<EditText
android:id="@+id/etUsername"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Username" />
<EditText
android:id="@+id/etPassword"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Password"
android:inputType="textPassword" />
<Button
android:id="@+id/btnRegister"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Register" />
</LinearLayout>
```
注意:这只是一个简单的示例,实际应用中需要进行更多的安全性和错误处理。