mercredi 21 octobre 2015

Android Studio SQLite [duplicate]

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