2017-08-11 5 views
0

J'essaye de créer une base de données simple dans android, mais la base de données ne crée pas et je ne sais pas pourquoi. J'ai lu beaucoup de solutions mais rien n'aide.Base de données SQLite dans la base de données Android n'a pas créé

C'est la SQLiteOpenHelper classe étendue

public class TodoDB extends SQLiteOpenHelper { 
    public static final int DATABASE_VERSION = 1; 
    public static final String DATABASE_NAME = "todo.db"; 

    public TodoDB(android.content.Context context){ 
     super(context, DATABASE_NAME, null, DATABASE_VERSION); 
    } 
    @Override 
    public void onCreate(SQLiteDatabase sqLiteDatabase) { 
     String query = "CREATE TABLE "+ TaskSchema.TaskColumns.TABLE_NAME + "(" + 
       TaskSchema.TaskColumns.ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + 
       TaskSchema.TaskColumns.TITLE + " TEXT NOT NULL, " + 
       TaskSchema.TaskColumns.INFORMATION + " TEXT NOT NULL, " + 
       TaskSchema.TaskColumns.DATE + " TEXT NOT NULL " + 
       ");"; 
     sqLiteDatabase.execSQL(query); 
    } 

    @Override 
    public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) { 

    } 

    public void addTask() 
    { 
     ContentValues values = new ContentValues(); 
     values.put(TaskSchema.TaskColumns.TITLE, "l"); 
     values.put(TaskSchema.TaskColumns.INFORMATION, "temporal"); 
     values.put(TaskSchema.TaskColumns.DATE,"20-8-16"); 
     this.getWritableDatabase().insert(TaskSchema.TaskColumns.TABLE_NAME,null,values); 
    } 

    public String getTask() 
    { 
     String args[] = {"l"}; 
     String columns[] = {TaskSchema.TaskColumns.TITLE}; 
     Cursor c = this.getReadableDatabase().query(TaskSchema.TaskColumns.TABLE_NAME,columns, TaskSchema.TaskColumns.TITLE + " LIKE ?",args,null,null,null); 
     String result = c.getString(c.getColumnIndex(TaskSchema.TaskColumns.TITLE)); 
     return result; 
    } 

} 

Ceci est la classe d'activité

public class MainActivity extends AppCompatActivity { 

    Button addButton; 
    Button deleteButton; 
    TodoDB db; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     addButton = (Button)findViewById(R.id.addButton); 
     TodoDB db = new TodoDB(this); 
     db.addTask(); 
     String test = db.getTask(); 
     Toast.makeText(this, test,Toast.LENGTH_SHORT); 
    } 
} 

Moyens aider.

Informations supplémentaires: J'ai utilisé le moniteur Android pour trouver la base de données, mais n'est pas dans le périphérique virtuel et j'ai couru l'application dans mon téléphone portable et quand je cherche la base de données, il n'existe pas. lorsque j'essaie de faire une requête, l'application est proche.

+0

Comment savez-vous que la base de données n'est pas créée? – lelloman

+0

Essayez d'ajouter un point-virgule (;) à la fin de la requête. requête doit maintenant être comme: chaîne de requête = "CREATE TABLE "+ TaskSchema.TaskColumns.TABLE_NAME + "(" + TaskSchema.TaskColumns.ID +" INTEGER PRIMARY KEY AUTOINCREMENT," TEXT + TaskSchema.TaskColumns.TITLE + " NOT NULL, "+ TaskSchema.TaskColumns.INFORMATION +" TEXTE NON NUL ", + TaskSchema.TaskColumns.DATE +" TEXT NOT NULL "+ "); "; –

+0

@lelloman J'ai utilisé le moniteur Android pour trouver la base de données, mais ce n'est pas dans le périphérique virtuel et je cours l'application dans mon téléphone portable et quand je cherche la base de données, il n'existe pas. lorsque j'essaie de faire une requête, l'application est proche. –

Répondre

-1

Je ne sais pas ce que vous avez déjà fait. Avez-vous créé d'autres tables avant d'essayer de créer cette table? Si oui, la méthode onCreate() dans SQLite est appelée seulement la première fois que vous appelez la classe qui l'implémente. Essayez de supprimer votre application et de l'installer à nouveau. Ou donner d'autres détails de ce que vous avez fait avant

+0

le même, et ne jamais créer la base de données. –

1
TodoDB db = new TodoDB(this); 

instanciation d'un SQLiteOpenHelper ne crée pas le fichier de base de données. Vous devez également appeler le getWritableDatabase() ou le getReadableDatabase() pour créer le fichier de base de données. Par exemple:

TodoDB openHelper = new TodoDB(this); 
SQLiteDatabase db = openHelper.getWritableDatabase(); 
+0

où je dois mettre ça? –

+0

Mise à jour de la réponse avec un exemple – laalto