samedi 4 avril 2015

SQLite Can't insert more than one records

i have 3 classes. DatabaseHandler, DatabaseController and addItem. I can insert one record, but if i want to insert 2 record, it just inserts the first one.


DatabaseHandler



public class DatabaseHandler extends SQLiteOpenHelper {

private static final String DATABASE_NAME = "entrys.db";
private final static int DATABASE_VERSION = 1;

public final static String ENTRY_TABLE = "poolentrys";
public final static String ENTRY_ID = "_id";
public final static String ENTRY_NAME = "name";
public final static String ENTRY_API = "api";

private static final String createDB = "create table "
+ ENTRY_TABLE + "("
+ ENTRY_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, "
+ ENTRY_NAME + " TEXT NOT NULL, "
+ ENTRY_API + " TEXT NOT NULL);";

public DatabaseHandler(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}

public void onCreate(SQLiteDatabase db) {
db.execSQL(createDB);
}

public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS "+ENTRY_TABLE);
onCreate(db);
}}


DatabaseController



public class DatabaseController {

private DatabaseHandler dbhandler;
private Context ourcontext;
private SQLiteDatabase database;

public DatabaseController(Context c) {
ourcontext = c;
}

public DatabaseController open() throws SQLException {
dbhandler = new DatabaseHandler(ourcontext);
database = dbhandler.getWritableDatabase();
return this;

}

public void close() {
dbhandler.close();
}

//Inserting Data into table
public void insertData(String name, String api) {
ContentValues cv = new ContentValues();
cv.put(DatabaseHandler.ENTRY_NAME, name);
cv.put(DatabaseHandler.ENTRY_API, api);
database.insert(DatabaseHandler.ENTRY_TABLE, null, cv);
}

//some other classes, irrelevant for insert
//...
//...}


addItem



public class addItem extends Activity implements View.OnClickListener {

EditText poolName, poolApi;
Button poolSave;
DatabaseController dbcon;

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_additem);
poolName = (EditText) this.findViewById(R.id.poolName);
poolApi = (EditText) this.findViewById(R.id.poolApi);
poolSave = (Button) this.findViewById(R.id.poolSave);

dbcon = new DatabaseController(this);
dbcon.open();
poolSave.setOnClickListener(this);
}

@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.poolSave:
if(poolName.getText().toString().trim().length()==0||
poolApi.getText().toString().trim().length()==0)
{
Toast.makeText(getApplicationContext(), "Fehler: Alle Felder müssen ausgefüllt sein!",
Toast.LENGTH_LONG).show();
return;
}
String name = poolName.getText().toString();
String api = poolApi.getText().toString();
dbcon.insertData(name, api);
Intent main = new Intent(this, MainActivity.class);
startActivity(main);
break;

default:
break;
}
}}


Just found other people who also had this error, but their solutions didn't helped me.


Aucun commentaire:

Enregistrer un commentaire