Autore Topic: PROBLEMI CON LA CREAZIONE DEL DB  (Letto 381 volte)

Offline w.biancaniello

  • Nuovo arrivato
  • *
  • Post: 13
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    HTC Wildfire
  • Sistema operativo:
    Windows
PROBLEMI CON LA CREAZIONE DEL DB
« il: 21 Settembre 2011, 10:41:06 CEST »
0
Salve ragazzi ho problemi con la creazione del db... Questo è il codice che utilizzo per crearlo

Codice (XML): [Seleziona]
package it.progettoso.utility;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

public class DBConnection  extends SQLiteOpenHelper {
        private static final String DB_NAME="DBProgettoSO";
        private static final int DB_VERSION=1;

        static final String TABLE = "commandsTable";
        static final String ID = "_id";
        static final String COMMAND_KEY = "command";
        static final String CODE_KEY = "code";

        SQLiteDatabase mDb;
        static Context mContext;


        public DBConnection(Context ctx){
                super(ctx, DB_NAME, null, DB_VERSION);
                mContext=ctx;
        }

        @Override
        public void onCreate(SQLiteDatabase _db) {
                String sql="CREATE TABLE IF NOT EXISTS "
                        + TABLE + " ("
                        + ID + " integer primary key autoincrement, "
                        + COMMAND_KEY + " text not null, "
                        + CODE_KEY + " integer not null);";
                _db.execSQL(sql);
        }

        public boolean open() {
                mDb=getWritableDatabase();
                if(mDb==null)
                        return false;
                return true;
        }

        public void close(){
                mDb.close();
        }

        public long insertCommand(String command,String code){
                ContentValues cv=new ContentValues();
                cv.put(COMMAND_KEY, command);
                cv.put(CODE_KEY, code);
                return mDb.insert(TABLE, null, cv);
        }

        public String readCommand(String command){
                String result="";

                String query = "SELECT "+ CODE_KEY + " FROM " + TABLE + " WHERE " + COMMAND_KEY +" = ?";

                String[] selectionArgs = { command };
                Cursor c = mDb.rawQuery(query, selectionArgs);
                if(c.moveToNext())
                        result=c.getString(0);
                return result;

        }

        @Override
        public void onUpgrade(SQLiteDatabase _db, int oldVersion, int newVersion) {


        }

}


e nell'attività, dove voglio popolare il mio db faccio:

Codice (XML): [Seleziona]
       DBConnection db = new DBConnection(v.getContext());
        db.open();
        Toast.makeText(v.getContext(), "aperto", Toast.LENGTH_LONG).show();
        long h = db.insertCommand("", "");
        db.close();

quando lancio la mia applicazione si presenta una bella eccezione... :(
ecco il Logcat



Codice (XML): [Seleziona]
09-21 08:33:36.548: ERROR/AndroidRuntime(427): FATAL EXCEPTION: main
09-21 08:33:36.548: ERROR/AndroidRuntime(427): android.database.sqlite.SQLiteException: unable to open database file
09-21 08:33:36.548: ERROR/AndroidRuntime(427):     at android.database.sqlite.SQLiteDatabase.dbopen(Native Method)
09-21 08:33:36.548: ERROR/AndroidRuntime(427):     at android.database.sqlite.SQLiteDatabase.<init>(SQLiteDatabase.java:1812)
09-21 08:33:36.548: ERROR/AndroidRuntime(427):     at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:817)
09-21 08:33:36.548: ERROR/AndroidRuntime(427):     at android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:851)
09-21 08:33:36.548: ERROR/AndroidRuntime(427):     at android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:844)
09-21 08:33:36.548: ERROR/AndroidRuntime(427):     at android.app.ContextImpl.openOrCreateDatabase(ContextImpl.java:540)
09-21 08:33:36.548: ERROR/AndroidRuntime(427):     at android.content.ContextWrapper.openOrCreateDatabase(ContextWrapper.java:203)
09-21 08:33:36.548: ERROR/AndroidRuntime(427):     at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:98)
09-21 08:33:36.548: ERROR/AndroidRuntime(427):     at it.progettoso.utility.DBConnection.open(DBConnection.java:38)
09-21 08:33:36.548: ERROR/AndroidRuntime(427):     at it.progettoso.activity.SubActivity$1.onClick(SubActivity.java:33)
09-21 08:33:36.548: ERROR/AndroidRuntime(427):     at android.view.View.performClick(View.java:2408)
09-21 08:33:36.548: ERROR/AndroidRuntime(427):     at android.view.View$PerformClick.run(View.java:8816)
09-21 08:33:36.548: ERROR/AndroidRuntime(427):     at android.os.Handler.handleCallback(Handler.java:587)
09-21 08:33:36.548: ERROR/AndroidRuntime(427):     at android.os.Handler.dispatchMessage(Handler.java:92)
09-21 08:33:36.548: ERROR/AndroidRuntime(427):     at android.os.Looper.loop(Looper.java:123)
09-21 08:33:36.548: ERROR/AndroidRuntime(427):     at android.app.ActivityThread.main(ActivityThread.java:4627)
09-21 08:33:36.548: ERROR/AndroidRuntime(427):     at java.lang.reflect.Method.invokeNative(Native Method)
09-21 08:33:36.548: ERROR/AndroidRuntime(427):     at java.lang.reflect.Method.invoke(Method.java:521)
09-21 08:33:36.548: ERROR/AndroidRuntime(427):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
09-21 08:33:36.548: ERROR/AndroidRuntime(427):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
09-21 08:33:36.548: ERROR/AndroidRuntime(427):     at dalvik.system.NativeStart.main(Native Method)

Qualcuno riesce a capire dove sta l'errore???

Offline MarcoDuff

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1073
  • Respect: +202
    • Google+
    • marcoduff
    • Mostra profilo
    • MarcoDuff's Blog
  • Dispositivo Android:
    Samsung Galaxy Nexus
  • Play Store ID:
    MarcoDuff
  • Sistema operativo:
    Windows 7
Re:PROBLEMI CON LA CREAZIONE DEL DB
« Risposta #1 il: 21 Settembre 2011, 12:11:53 CEST »
0
Potresti editare il titolo del tuo post scrivendolo in minuscolo?

Grazie.

Offline Luigi.Arena

  • Utente senior
  • ****
  • Post: 616
  • DACIA DUSTER 4X4 SUPER
  • Respect: +56
    • Mostra profilo
    • ArenaWebTest
  • Dispositivo Android:
    epad m009
  • Play Store ID:
    Luigi Arena
  • Sistema operativo:
    Windows 7
Re:PROBLEMI CON LA CREAZIONE DEL DB
« Risposta #2 il: 21 Settembre 2011, 16:25:33 CEST »
0
Prova a loggare la query per la creazione della tabella.
Io lo inizializzo così:
Codice: [Seleziona]
       //Impostodatabase
        myDB=new clsDatabase(this);
       
        //open database lettura & scrittura
        db=myDB.getWritableDatabase();
poi :
nella mia classe clsdatabase ho questo:
Codice: [Seleziona]
public class clsDatabase extends SQLiteOpenHelper
{
        final static String DB_NAME = "alarm_db";
        final static int DB_VERSION = 1;
        String sql="";
       
        //Costruttore
        public clsDatabase(Context context)
        {
                super(context, DB_NAME, null, DB_VERSION);
        }

        @Override
        public void onCreate(SQLiteDatabase db)
        {
                // Creazione delle tabelle
               
                //TABELLA SVEGLIA*****************************
                sql = "CREATE TABLE sveglia(";
                // id è incrementato automaticamente
                sql = sql + "id INTEGER PRIMARY KEY,";
                sql = sql + "ora time,";
                sql = sql + "ripeti INTEGER,";
                sql = sql + "frequenza TEXT NOT NULL,";
                sql = sql + "testo TEXT NOT NULL,";
                sql = sql + "suono TEXT NOT NULL";
                sql = sql + ")";
                db.execSQL(sql);
                //*********************************************
        }
       
       
       
       

        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
        {
                // Aggiornamento delle tabelle
               
        }
       

}
Ti assicuro che funziona
È stata trovata una soluzione al tuo problema?Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato .