2011-10-18 4 views
0

J'ai créé une base de données à l'aide du navigateur de base de données SQLite. Je dois suivre ce example. enter image description hereErreur lors de la récupération des données de la base de données SQLite

Nom de la base de données est: jokesdatabase.sql, qui a une table blagues i place ce dossier dans les actifs comme ceci: dossier actif

Maintenant, mon code est:

DatabaseHelper.java

public class DatabaseHelper extends SQLiteOpenHelper { 
private Context mycontext; 

private String DB_PATH = "/data/data/a.b.c/databases/"; 
private static String DB_NAME = "jokesdatabase.sql"; //I have aslo tru .db extenstion 
private static String DB_TABLE = "jokes"; 

public SQLiteDatabase myDataBase; 

public DatabaseHelper(Context context) throws IOException { 
    super(context, DB_NAME, null, 1); 
    this.mycontext = context; 
    boolean dbexist = checkdatabase(); 
    if (dbexist) { 
     // System.out.println("Database exists"); 
     opendatabase(); 
    } else { 
     // System.out.println("Database doesn't exist"); 
     createdatabase(); 
    } 
} 

public void createdatabase() throws IOException { 
    boolean dbexist = checkdatabase(); 
    if (dbexist) { 
     System.out.println(" Database exists."); 
    } else { 
     this.getReadableDatabase(); 
     try { 
      copydatabase(); 
     } catch (IOException e) { 
      throw new Error("Error copying database"); 
     } 
    } 
} 

private boolean checkdatabase() { 
    // SQLiteDatabase checkdb = null; 
    boolean checkdb = false; 
    try { 
     String myPath = DB_PATH + DB_NAME; 
     File dbfile = new File(myPath); 
     checkdb = SQLiteDatabase.openDatabase(myPath, null, 
       SQLiteDatabase.OPEN_READWRITE) != null; 
     checkdb = dbfile.exists(); 
    } catch (SQLiteException e) { 
     System.out.println("Database doesn't exist"); 
    } 

    return checkdb; 
} 

private void copydatabase() throws IOException { 

    // Open your local db as the input stream 
    InputStream myinput = mycontext.getAssets().open(DB_NAME); 

    // Path to the just created empty db 
    String outfilename = DB_PATH + DB_NAME; 

    // Open the empty db as the output stream 
    OutputStream myoutput = new FileOutputStream(outfilename); 

    // transfer byte to inputfile to outputfile 
    byte[] buffer = new byte[1024]; 
    int length; 
    while ((length = myinput.read(buffer)) > 0) { 
     myoutput.write(buffer, 0, length); 
    } 

    // Close the streams 
    myoutput.flush(); 
    myoutput.close(); 
    myinput.close(); 

} 

public void opendatabase() throws SQLException { 
    // Open the database 
    String mypath = DB_PATH + DB_NAME; 
    myDataBase = SQLiteDatabase.openDatabase(mypath, null, 
      SQLiteDatabase.OPEN_READONLY); 

} 

public synchronized void close() { 
    if (myDataBase != null) { 
     myDataBase.close(); 
    } 
    super.close(); 
} 

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

} 

// This will return a cursor containing database records 
public Cursor data() { 

    Cursor c; 
    c = myDataBase.query(DB_TABLE, null, null, null, null, null, null); 
    return c; 
} 

@Override 
public void onCreate(SQLiteDatabase arg0) { 
    // TODO Auto-generated method stub 

} 

}

Result.java

maintenant AndroidManifest.xml

<application android:icon="@drawable/icon" android:label="@string/app_name"> 
    <activity android:name=".DatabaseHelper" 
       android:label="@string/app_name"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
    <activity android:name=".Result" android:label="@string/app_name"></activity> 
</application> 

Et enfin je reçois un message d'erreur suivant sur logcat. Donnez-moi, quelle est l'erreur dans mon code. Je veux seulement créer la base de données using le navigateur de sqlite. S'il vous plaît ne donnez pas la solution de codage via. Corrigez ce problème uniquement. qui est link.

+0

Affichez le StackTrace sous forme de texte! –

Répondre

2

Ne définissez pas votre DatabaseHelper comme activité dans votre manifeste Android, il s'agit de et non et Activity.

Créez et utilisez votre DatabaseHelper dans un Activity, comme n'importe quelle autre classe.

+0

cela fonctionne bien. Merci. –

Questions connexes