This question already has an answer here:
Hi i'm beginner in Android app. I have a many errors and app is not starting.
E/AndroidRuntime: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.home.lab4/com.example.home.lab4.MainActivity}: android.database.sqlite.SQLiteConstraintException: column id is not unique (code 19)
My MainActivity ` public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
DatabaseHandler db = new DatabaseHandler(this);
User b = new User(1,"London", "123456");
db.addUser(b);
Log.d("Reading: ", "Reading all users...");
List<User> users = db.getAllUsers();
for(User us : users ) {
String log = "Username: " + us.getName() + " ,Password: " + us.getPassword();
Log.d("Name: ", log);
}
db.close();
Button login = (Button) findViewById(R.id.login);
Button signup = (Button) findViewById(R.id.signup);
login.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
EditText usernametext = (EditText) findViewById(R.id.usernameField);
String username = usernametext.getText().toString();
}
});
signup.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
EditText passwordtext = (EditText) findViewById(R.id.passwordField);
String password = passwordtext.getText().toString();
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}`
DatabaseHandler
`public class DatabaseHandler extends SQLiteOpenHelper { // DB information private static final int DATABASE_VERSION = 1; private static final String DATABASE_NAME = "user"; private static final String TABLE_USERS = "users";
private static final String KEY_ID = "id";
private static final String KEY_NAME = "username";
private static final String KEY_PASSWORD = "password";
public DatabaseHandler(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
public void onCreate(SQLiteDatabase db){
String CREATE_USERS_TABLE = "CREATE TABLE " + TABLE_USERS + "(" + KEY_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + KEY_NAME + " TEXT, " + KEY_PASSWORD + " TEXT" + ")";
db.execSQL(CREATE_USERS_TABLE);
}
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS users");
onCreate(db);
}
public void addUser(User user){
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(KEY_NAME, user.getName());
values.put(KEY_PASSWORD, user.getPassword());
db.insert(TABLE_USERS, null, values);
db.close();
}
public List<User> getAllUsers(){
List<User> userList = new ArrayList<User>();
String selectQuery = "SELECT * FROM users";
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.rawQuery(selectQuery, null);
if ( cursor.moveToFirst()) {
do {
User user = new User();
user.setId(Integer.parseInt(cursor.getString(0)));
user.setUsername(cursor.getString(1));
user.setPassword(cursor.getString(2));
userList.add(user);
}while(cursor.moveToNext());
}
return userList;
}
} `
User.java `public class User { int _id; String _username; String _password;
public User(){
}
public User(int id, String username, String password){
this._id = id;
this._username = username;
this._password = password;
}
public int getId(){
return this._id;
}
public String getName(){
return this._username;
}
public String getPassword(){
return this._password;
}
public void setId(int id){
this._id = id;
}
public void setUsername(String username){
this._username = username;
}
public void setPassword(String password){
this._password = password;
}
} `
Aucun commentaire:
Enregistrer un commentaire