Ich habe eine Java-Klasse zum Erstellen und Füllen einer Datenbank. Ich habe auch eine Aktivität, von der ich Informationen zur Verfügung stelle, um sie der Datenbank hinzuzufügen. Ich habe eine Methode zum Einfügen von Daten in die Datenbank, aber es funktioniert nicht, obwohl es aus meiner Sicht funktionieren sollte. Hier ist der Code:Android-Datenbank einfügen Fehler
public class AccountDatabase extends SQLiteOpenHelper {
private final static String DB_Name="ACCOUNT_DATABASE";
private final static int DB_VERSION=1;
private final static String TABLE_NAME="ACCOUNT";
private final static String col_1="ID";
private final static String col_2="USERNAME";
private final static String col_3="PASSWORD";
private final static String col_4="RETYPED PASSWORD";
private final static String col_5="EMAIL";
private final static String col_6="PASSPHRASE";
AccountDatabase(Context context) {
super(context, DB_Name, null, DB_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE "+ TABLE_NAME+"(ID INTEGER PRIMARY KEY AUTOINCREMENT,USERNAME TEXT,PASSWORD TEXT,RETYPED PASSWORD TEXT,EMAIL TEXT,PASSPHRASE TEXT)");
}
@Override
public void onUpgrade(SQLiteDatabase db,int oldVersion, int newVersion){
db.execSQL("DROP TABLE IF EXISTS"+TABLE_NAME);
onCreate(db);
}
public boolean insertData(String username,String password,String retypedPassword,String email,String passphrase){
SQLiteDatabase db=this.getWritableDatabase();
ContentValues profileValues=new ContentValues();
profileValues.put(col_2,username);
profileValues.put(col_3,password);
profileValues.put(col_4,retypedPassword);
profileValues.put(col_5,email);
profileValues.put(col_6,passphrase);
long result=db.insert(TABLE_NAME,null,profileValues);//this produces result -1 and I don't know why
if(result==-1)
return false;
else
return true;
}
Und das ist der Code für die Java-Aktivität aus dem ich den Aufruf der Methode:
public void submitAccount(View view){
EditText info1=(EditText)(findViewById(R.id.username_edit_text));
String message1=info1.getText().toString();
EditText info2=(EditText)(findViewById(R.id.password_edit_text));
String message2=info2.getText().toString();
EditText info3=(EditText)(findViewById(R.id.retype_password_edit_text));
String message3=info3.getText().toString();
EditText info4=(EditText)(findViewById(R.id.email_edit_text));
String message4=info4.getText().toString();
EditText info5=(EditText)(findViewById(R.id.passphrase_edit_text));
String message5=info5.getText().toString();
if(!message1.isEmpty())
counter++;
if(!message2.isEmpty())
counter++;
if(!message3.isEmpty())
counter++;
if(!message4.isEmpty())
counter++;
if(!message5.isEmpty())
counter++;
if(counter==5) {
mydb.insertData(message1,message2,message3,message4,message5);//this is where I call the method
Toast.makeText(CreateAccountActivity.this, "Data inserted:" + message1 + "\n" + message2 + "\n" + message3 + "\n" + message4 + "\n" + message5, Toast.LENGTH_LONG).show();
Intent send = new Intent(this, WelcomeActivity.class);
String value = "true";
send.putExtra(WelcomeActivity.EXTRA_MESSAGE, value);
counter = 0;
startActivity(send);
}
else{
Intent send=new Intent(this,CreateAccountActivity.class);
Log.i(msg,"Still in CreateAccountActivity");
counter=0;
startActivity(send);
}
}
ich die folgende Störung erhalte,
SQL (Abfrage) Fehler oder fehlende Datenbank. (In der Nähe von "PASSWORD": Syntaxfehler (Code 1): Während der Zusammenstellung: INSERT INTO ACCOUNT (Email, Passphrase USERNAME- retyped Passwort, Passwort) VALUES (,,,,)?????)
verursacht durch: SQL (Abfrage) Fehler oder fehlende Datenbank. \t (in der Nähe von "PASSWORD": Syntaxfehler (Code 1)), beim Kompilieren: INSERT IN ACCOUNT (EMAIL, PASSPHRASE, BENUTZERNAME, RETYPED PASSWORD, PASSWORD) WERTE (?,?,?,?,?)) DAS IST DER FEHLER, den ich erhalte – Roberto
Sieht so aus, als hätten Sie ein Leerzeichen zwischen RETYPED und PASSWORD - Ihr 4. Parameter Wenn Sie ein Trennzeichen benötigen, verwenden Sie die Unterstriche "_" – mrkernelpanic