Non hai copiato il mio codice visto che nel mio le variabili sono prima del costruttore e nel tuo invece stanno dopo.
Non hai copiato il mio codice visto che nel mio le variabili sono prima del costruttore e nel tuo invece stanno dopo.
Ho provato a far cosi.. Visto che mi dava ugualmente errori
Per quello che vedo, apparte l'annotazione che ti ho fatto, non ci sono errori. Hai provato a fare un Clean? Il progetto te lo fa compilare? Puoi postare tutta la classe?
La classe che estende sqliteopenhelper ti serve per creare e aggiornare il tuo database, poi ne devi creare un altra che ti permetta in maniera semplice di eseguire le operazioni (come aggiungere o eliminare un record) sul tuo db.
questo è un esempio della classe che devi creare che ho trovato su internet per un database di contatti:
Comunque io ti consiglio di utilizzare i content provider come ho fatto anche io per la mia applicazione anche se hai bisogno di un po' più di lavoro, così puoi consultare il db con un cursor loader (una specie di async task), comunque trovi tutto quello che ti serve in questa guida:codice:import android.content.ContentResolver; import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.SQLException; import android.database.sqlite.SQLiteDatabase; import android.provider.ContactsContract; public class DbAdapter { private Context context; private SQLiteDatabase database; private DatabaseHelper dbHelper; // Database fields private static final String DATABASE_TABLE = "contact"; public static final String KEY_CONTACTID = "_id"; public static final String KEY_NAME = "name"; public static final String KEY_SURNAME = "surname"; public static final String KEY_SEX = "sex"; public static final String KEY_BIRTH_DATE = "birth_date"; public DbAdapter(Context context) { this.context = context; } public DbAdapter open() throws SQLException { dbHelper = new DatabaseHelper(context); database = dbHelper.getWritableDatabase(); return this; } public void close() { dbHelper.close(); } private ContentValues createContentValues(String name, String surname, String sex, String birth_date ) { ContentValues values = new ContentValues(); values.put( KEY_NAME, date ); values.put( KEY_SURNAME, flag_send_sms ); values.put( KEY_SEX, text_send_sms ); values.put( KEY_BIRTH_DATE, date_sent_sms ); return values; } //create a contact public long createContact(String name, String surname, String sex, String birth_date ) { ContentValues initialValues = createContentValues(name, surname, sex, birth_date); return database.insertOrThrow(DATABASE_TABLE, null, initialValues); } //update a contact public boolean updateContact( long contactID, String name, String surname, String sex, String birth_date ) { ContentValues updateValues = createContentValues(name, surname, sex, birth_date); return database.update(DATABASE_TABLE, updateValues, KEY_ CONTACTID + "=" + contactID, null) > 0; } //delete a contact public boolean deleteContact(long contactID) { return database.delete(DATABASE_TABLE, KEY_ CONTACTID + "=" + contactID, null) > 0; } //fetch all contacts public Cursor fetchAllContacts() { return database.query(DATABASE_TABLE, new String[] { KEY_CONTACTID, KEY_NAME, KEY_SURNAME, KEY_SEX, KEY_BIRTH_DATE}, null, null, null, null, null); } //fetch contacts filter by a string public Cursor fetchContactsByFilter(String filter) { Cursor mCursor = database.query(true, DATABASE_TABLE, new String[] { KEY_CONTACTID, KEY_NAME, KEY_SURNAME, KEY_SEX, KEY_BIRTH_DATE }, KEY_NAME + " like '%"+ filter + "%'", null, null, null, null, null); return mCursor; }
http : / /www . anddev . it / index.php?topic=8538.0
Riguardo al discorso sulla data, io ho salvato la data come fosse testo e per formattarla ho usato questa classe:
codice:import java.text.SimpleDateFormat; import java.util.Calendar; public class FormattedDateTime { public static String getDateTime(){ Calendar c = Calendar.getInstance(); SimpleDateFormat sdf = new SimpleDateFormat("d/M/yy H:m:s"); String dateTime = sdf.format(c.getTime()); return dateTime; } }
Ultima modifica di Caco85; 10-07-14 alle 22:09
non ho capito questo:
private ContentValues createContentValues(String data, String ora, String valorestella) {
ContentValues values = new ContentValues();
values.put( KEY_NAME, date );
values.put( KEY_SURNAME, flag_send_sms );
values.put( KEY_SEX, text_send_sms );
values.put( KEY_BIRTH_DATE, date_sent_sms );
ho preso spunto da questo link http ://www. html.it/articoli/la-gestione-dei-database-in-android-3/
cosa sono date, flag_send_sms ect... mi chiede di inizilizzarle... ma dove?
values.put?
questo è il mio codice..
1import android.content.ContentResolver;
2import android.content.ContentValues;
3import android.content.Context;
4import android.database.Cursor;
5import android.database.SQLException;
6import android.database.sqlite.SQLiteDatabase;
7import android.provider.ContactsContract;
8
9public class DbAdapter { //L’adapter fornisce tutta una serie di metodi che, una volta testati opportunamente, permettono al programmatore di concentrare le proprio energie sugli aspetti importanti dell’applicativo e non sulla creazione o sulla modifica di un record del database.
10"unused") (
11private static final String LOG_TAG = DbAdapter.class.getSimpleName();
12
13private Context context;
14private SQLiteDatabase database;
15private DatabaseHelper dbHelper;
16
17// Database fields
18private static final String DATABASE_TABLE = "sigaretta";
19
20public static final String KEY_id = "_id";
21public static final String KEY_Data = "data";
22public static final String KEY_Ora = "ora";
23public static final String KEY_Valorestella = "valorestella";
24//In ambiente Android il context è un elemento fondamentale che utilizzeremo spesso nelle nostre applicazioni: è una classe astratta di cui l’implementazione è fornita dal sistema. Il context permette di accedere alle risorse specifiche dell’applicazione, come ad esempio le activity, gli intent, ecc
25public DbAdapter(Context context) {
26this.context = context;
27}
28
29public DbAdapter open() throws SQLException {
30dbHelper = new DatabaseHelper(context);
31database = dbHelper.getWritableDatabase();
32return this;
33}
34
35public void close() {
36dbHelper.close();
37}
38
39private ContentValues createContentValues(String data, String ora, String valorestella) {
40ContentValues values = new ContentValues();
41values.put( KEY_Data, date );
42values.put( KEY_Ora, flag_send_sms );
43values.put( KEY_Valorestella, text_send_sms );
44
45return values;
46}
47
48//create a contact
49public long createContact(String data, String ora, String valorestella) {
50ContentValues initialValues = createContentValues(data,ora,valorestella);
51return database.insertOrThrow(DATABASE_TABLE, null, initialValues);
52}
53
54//update a contact
55public boolean updateContact( long id, String data, String ora, String valorestella ) {
56ContentValues updateValues = createContentValues(data, ora, valorestella);
57return database.update(DATABASE_TABLE, updateValues, KEY_id + "=" + id, null) > 0;
58}
59
60//delete a contact
61public boolean deleteContact(long id) {
62return database.delete(DATABASE_TABLE, KEY_id + "=" + id, null) > 0;
63}
64
65//fetch all contacts
66public Cursor fetchAllContacts() {
67return database.query(DATABASE_TABLE, new String[] { KEY_id, KEY_Data, KEY_Ora, KEY_Valorestella}, null, null, null, null);
68}
69
70//fetch contacts filter by a string
71public Cursor fetchContactsByFilter(String filter) {
72Cursor mCursor = database.query(true, DATABASE_TABLE, new String[] {
73KEY_id, KEY_Data, KEY_Ora, KEY_Valorestella},
74KEY_Data + " like '%"+ filter + "%'", null, null, null, null);
75
76return mCursor;
77}}
Ultima modifica di xixietto; 11-07-14 alle 16:36
come faccio a leggere i valore presenti nel database?
Ultima modifica di xixietto; 12-07-14 alle 23:36
Te lo avevo già detto qui come si fa. In altre parole fai una query che seleziona tutto dalla tabella e tramite un while prendi i valori uno ad uno e li inserisci in un ArrayList, nel mio caso di tipo String ma se devi recuperare molti valori devi usare un Oggetto.
sapresti aiutarmi a modificare questo codice?
e farlo diventare un arraylist....
in principio questo codice mi mostra solo il numero di record presenti...
ora vorrei che mi mostrasse i valori dei record...
private void recuperaNumeroRecord() {
//Chiediamo l'accesso al db
SQLiteDatabase db = mMioDbHelper.getReadableDatabase();
//Query per recuperare il numero di righe presenti nel db
final String sql = "SELECT COUNT(*) FROM tabella";
Cursor c = db.rawQuery(sql, null);
if(c.moveToFirst()) {
tView.setText(c.getString(0));
}
}
sapete come si può inviare al database sqlite di android...
i valori presi da un metodo?
io ho provato così.. ma è errato
...........
contentValues.put("data", data().getText().toString());
...........