ログインおよび登録機能を実装する際、ユーザー情報はローカルデータベースに保存し、認証処理はそのデータベースから行う必要がある。以下では、AndroidでSQLiteを活用してユーザー登録とログインを実現する方法を示す。
DatabaseHelper.java
package com.example.fuxing.service;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class DatabaseHelper extends SQLiteOpenHelper {
private static final String DATABASE_NAME = "user.db";
private static final int DATABASE_VERSION = 1;
public DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
String createTableQuery = "CREATE TABLE user (" +
"id INTEGER PRIMARY KEY AUTOINCREMENT, " +
"username TEXT, " +
"password TEXT, " +
"email TEXT, " +
"phonenumber TEXT)";
db.execSQL(createTableQuery);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// バージョンアップ時の処理(今回は未使用)
}
}
UserService.java
package com.example.fuxing.service;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import com.example.fuxing.User;
public class UserService {
private final DatabaseHelper dbHelper;
public UserService(Context context) {
this.dbHelper = new DatabaseHelper(context);
}
public boolean authenticate(String username, String password) {
SQLiteDatabase db = dbHelper.getReadableDatabase();
String query = "SELECT 1 FROM user WHERE username = ? AND password = ?";
try (Cursor cursor = db.rawQuery(query, new String[]{username, password})) {
return cursor.moveToFirst();
}
}
public boolean createUser(User user) {
SQLiteDatabase db = dbHelper.getWritableDatabase();
String insertQuery = "INSERT INTO user(username, password, email, phonenumber) VALUES (?, ?, ?, ?)";
db.execSQL(insertQuery, new Object[]{
user.getUsername(),
user.getPassword(),
user.getEmail(),
user.getPhonenumber()
});
return true;
}
}
User.java
package com.example.fuxing;
import java.io.Serializable;
public class User implements Serializable {
private int id;
private String username;
private String password;
private String email;
private String phoneNumber;
public User() {}
public User(String username, String password, String email, String phoneNumber) {
this.username = username;
this.password = password;
this.email = email;
this.phoneNumber = phoneNumber;
}
// GetterとSetterメソッド
public int getId() { return id; }
public void setId(int id) { this.id = id; }
public String getUsername() { return username; }
public void setUsername(String username) { this.username = username; }
public String getPassword() { return password; }
public void setPassword(String password) { this.password = password; }
public String getEmail() { return email; }
public void setEmail(String email) { this.email = email; }
public String getPhoneNumber() { return phoneNumber; }
public void setPhoneNumber(String phoneNumber) { this.phoneNumber = phoneNumber; }
@Override
public String toString() {
return "User{id=" + id +
", username='" + username + '\'' +
", password='" + password + '\'' +
", email='" + email + '\'' +
", phoneNumber='" + phoneNumber + "'}";
}
}