android.la base de données.sqlite.SQLITeException: no such table: admin lors de la compilation: INSERT INTO ...etc
je suis en train d'ajouter une autre table dans ma base de données , le premier a été créé avec succès, et les données ont été insérées avec succès. mais quand j'ai essayé d'ajouter une autre table, puis inséré les données...j'ai eu cette erreur (qui n'table lors de la compilation INSERT into....etc.
j'ai cherché dans google et ici aussi, sur stackoverflow, j'ai trouvé des gars avec des codes similaires à la mienne. quelqu'un a dû ajouter (onUpgrade méthode) à son code de sorte qu'il sera auto-incrémentation de la version de base de données.... mais je l'ai déjà écrit. je suis tellement confus. toute aide, s'il vous plaît..??
c'est le code de base de données:
package group.com;
import android.content.ContentValues;
import android.content.Context;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;
public class DBAdapter {
public static final String KEY_Admin_ROWID = "_id";
public static final String KEY_Admin_fullName = "adminFullName";
public static final String KEY_Admin_UserName = "AdminUserName";
public static final String KEY_Admin_Password = "AdminPassword";
private static final String TAG = "DBAdapter";
private static final String DATABASE_NAME = "RamiTariq";
private static final String DATABASE_TABLE = "info";
private static final String DATABASE_TABLE_Admin = "admin";
private static final int DATABASE_VERSION = 1;
private static final String DATABASE_CREATE = "create table "
+ DATABASE_TABLE + " (" + KEY_ROWID
+ " integer primary key autoincrement, "
+ KEY_NAME + " text not null, "
+ KEY_PSSWORD + " text not null , "
+ KEY_F_NAME + " text not null ,"
+ KEY_DATE + " text not null,"
+ KEY_JOB + " text not null,"
+ KEY_ADDRESS + " text not null,"
+ KEY_PHONE + " text not null,"
+ KEY_NATIONAL_NUMBER + " text not null,"
+ KEY_MONEY_SHOULD_PAY + " text null,"
+ KEY_ACTUAL_MONEY + " text null);";
private static final String DATABASE_CREATE_ADMIN = "create table "
+ DATABASE_TABLE_Admin + " (" + KEY_Admin_ROWID
+ " integer primary key autoincrement, "
+ KEY_Admin_fullName + " text not null, "
+ KEY_Admin_UserName + " text not null, "
+ KEY_Admin_Password + " text not null);";
private final Context context;
private DatabaseHelper DBHelper;
private SQLiteDatabase db;
public DBAdapter(Context ctx) {
this.context = ctx;
DBHelper = new DatabaseHelper(context);
}
private static class DatabaseHelper extends SQLiteOpenHelper {
DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
public void onCreate(SQLiteDatabase db) {
try {
db.execSQL(DATABASE_CREATE);
db.execSQL(DATABASE_CREATE_ADMIN);
} catch (SQLException e) {
e.printStackTrace();
}
}
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
Log.w(TAG, "Upgrading database from version " + oldVersion + " to "
+ newVersion + ", which will destroy all old data");
db.execSQL("DROP TABLE IF EXISTS "+DATABASE_TABLE);
db.execSQL("DROP TABLE IF EXISTS "+DATABASE_TABLE_Admin);
onCreate(db);
}
}
// ---opens the database---
public DBAdapter open() throws SQLException {
db = DBHelper.getWritableDatabase();
return this;
}
// ---closes the database---
public void close() {
DBHelper.close();
}
//------insert an admin into the database-----
public long insertAdmin(String full_name, String user_name, String password ) {
ContentValues initialValues = new ContentValues();
initialValues.put(KEY_Admin_fullName, full_name);
initialValues.put(KEY_Admin_UserName, user_name);
initialValues.put(KEY_Admin_Password,password);
return db.insert(DATABASE_TABLE_Admin, null,initialValues);
}
}
et c'est le code d'activité:
package group.com;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class InsertAdmin extends Activity {
DBAdapter db = new DBAdapter(this);
EditText fullName, username, password, rePassword;
Button insertAdmin;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.insertadmin);
fullName = (EditText) findViewById(R.id.fullName);
username = (EditText) findViewById(R.id.username);
password = (EditText) findViewById(R.id.password);
rePassword = (EditText) findViewById(R.id.rePassword);
insertAdmin = (Button) findViewById(R.id.insertAdmin);
insertAdmin.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
String fName = fullName.getText().toString();
String uName = username.getText().toString();
String pass = password.getText().toString();
String rePass = rePassword.getText().toString();
if(fName.length()==0 || uName.length()==0 || pass.length()==0 || rePass.length()==0)
{
displayMessage("Please Enter Full Data");
return;
}
if (uName.length() == 0)
{
displayMessage("Enter username");
return;
}
if (pass.length() == 0)
{
displayMessage("Enter The password");
return;
}
if(pass.equals(rePass))
{
db.open();
long id = db.insertAdmin(fName, uName, pass);
if(id>0)
{
displayMessage(id + "\nSuccessfuly Inserted");
}
else
{
displayMessage("Not Inserted");
}
db.close();
startActivity(new Intent(getBaseContext(),Admin.class)) ;
}
else
displayMessage("Your Passwords doesn't match");
}
});
}
public void displayMessage(String msg)
{
Toast.makeText(this, msg, Toast.LENGTH_SHORT).show();
}
}
- Veuillez envoyer la stacktrace
- je n'ai pas affaire à la stacktrace avant.. s'il vous plaît me montrer comment l'ouvrir?
Vous devez vous connecter pour publier un commentaire.
Désinstaller votre application de sorte que l'ancienne version de la base de données est supprimée.
Votre version de base de données est encore
1
de sorte que leonUpgrade()
n'est pas exécuté. Le fichier de base de données existe déjà, afinonCreate()
n'est pas exécuté. La base de données existante fichier ne contient pas toutes les tables que vous créez dans votre version actuelle deonCreate()
.j'ai l'habitude d'utiliser ce code pour ajouter une nouvelle table ou attribut
d'abord vérifier si la table est existent ou non en sélectionnant certaines données, si ce n'existait pas alors de créer la table