db.insert(table_name,null,contentValues);
gibt immer -1
zurück und es fügt die Werte nicht in die Datenbanken ein.ContentValues Einfügen gibt immer die -1
Können Sie mir bitte helfen, herauszufinden, was ich falsch mache?
database_class.java:
public class database_class extends SQLiteOpenHelper {
public static final String database_name = "signup_db";
public static final String table_name = "signup";
public static final String column_1 = "FIRST_NAME";
public static final String column_2 = "SECOND_NAME";
public static final String column_3 = "EMAIL";
public static final String column_4 = "PASSWORD";
public static final String column_5 = "c_password";
public database_class(Context context){
super(context,database_name , null, 1);
//Toast.makeText(context, "Class called ", Toast.LENGTH_SHORT).show();
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("create table" + table_name + "(ID INTEGER PRIMARY KEY AUTOINCREMENT , FIRST_NAME TEXT , SECOND_NAME TEXT , EMAIL TEXT , PASSWORD TEXT)");
}
@Override
public void onUpgrade(SQLiteDatabase db, int i, int i1) {
db.execSQL("DROP TABLE IF EXISTS" + table_name);
onCreate(db);
}
public boolean insertData(String first_name, String second_name, String email, String password){
SQLiteDatabase db = this.getWritableDatabase();
ContentValues contentValues = new ContentValues();
contentValues.put(column_1,first_name);
contentValues.put(column_2,second_name);
contentValues.put(column_3,email);
contentValues.put(column_4,password);
long result = db.insert(table_name,null,contentValues);
if (result == -1)
return false;
else
return true;
}
}
MainActivity Code:
fn = editText1.getText().toString();
ln = editText2.getText().toString();
em = editText3.getText().toString();
pass = editText4.getText().toString();
cpass = editText5.getText().toString();
if (1 == 1) {
//boolean isInserted = mydb.insertData(signup_values[0].toString(),signup_values[1].toString(),signup_values[2].toString(),signup_values[3].toString());
boolean isInserted = mydb.insertData(fn,ln,em,pass);
if(isInserted == true) {
Toast.makeText(MainActivity.this, "Data Inserted", Toast.LENGTH_SHORT).show();
}
else
Toast.makeText(MainActivity.this, "Data not Inserted", Toast.LENGTH_SHORT).show();
}
else
Toast.makeText(MainActivity.this, "Password Mismatch", Toast.LENGTH_SHORT).show();
Ich bin kein Android-Entwickler, aber da ich nicht einen Weg sehen, um den Fehler aus der db zu bekommen, würde ich prüfen, dass die db Sie einfügen zur Verfügung steht und offen bevor Sie versuchen, Ihren Einsatz zu tun. – Gavin
Hinweis: Lesen Sie über Java-Namenskonventionen. Klassen beginnen Großbuchstaben, Variablen haben nicht _ in ihren Namen. Außerdem: Deine Namen sind ziemlich schrecklich! Es gibt keine Notwendigkeit, Zeichen zu speichern; wie: was soll das heißen? em? bestehen? Kompass? Verwenden Sie Namen, die sagen, was das Ding sie bezeichnen ** ist **. Und verwende entweder ein Array für deine Textfelder; oder geben Sie auch die entsprechenden Namen an. Schließlich: Ziehen Sie in Betracht, für Ihre Felder nicht überall statische Daten zu verwenden. Sie sehen - Sie können den Datenbanknamen zu einem Feld machen, das Sie beispielsweise Ihrer Klasse im Konstruktor geben. – GhostCat
@GhostCat Versuchen Sie, das Problem zu lösen, nicht die Syntax nitpick;) Sie verschwenden den Atem –