title: Trying to load and then Query and SQLite Database in my Android Application - Severely Stumped
body: <p>Basically what I am trying to do is load my database (romskillDB.db) from my assets folder and then query for the information I want. I have tried almost every db helper class I could find on the net, I've tried researching every single method called by said helper classes, and I've even taken example code, copied it, and then tried to adapt it to my needs. All to no avail. So this is my last ditch effort to get the answer I need before I give up and hardcode the data into an extensive list in .xml files. Please review my code below, and thank you so very much for taking the time to help.</p>
  
  <p>This is the Class that displays the results.</p>
  
  <pre><code>package com.rom.testdb;
  
  import java.io.IOException;
  import com.rom.testdb.DbUtils;
  import android.app.ListActivity;
  import android.database.Cursor;
  import android.database.sqlite.SQLiteDatabase;
  import android.os.Bundle;
  import android.widget.TextView;
  
  public class testDB extends ListActivity {
  
      SQLiteDatabase db;
      DbUtils dbUtil;
  
      /** Called when the activity is first created. */
      @Override
      public void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
  
          dbUtil = new DbUtils();
  
          try {
              DbUtils.createDatabaseIfNotExists(this);
          } catch (IOException e) {
              // TODO Auto-generated catch block
              e.printStackTrace();
          }
  
  
          SQLiteDatabase db = DbUtils.getStaticDb();
  
          String table = "magegeneral";
          String[] columns = {"_id", "name"};
          Cursor cursor = db.query(table, columns, null, null, null, null, null);
          startManagingCursor(cursor);
          cursor.moveToFirst();  
          int thisId = cursor.getInt(0);
          String thisName = cursor.getString(1);
          cursor.close();
  
          TextView textview = new TextView(this);
          textview.setText(thisId + " " + thisName);
          setContentView(textview);
  
      }
  }
  </code></pre>
  
  <p>This is the helper code.</p>
  
  <pre><code>package com.rom.testdb;
  
  import java.io.File;
  import java.io.FileOutputStream;
  import java.io.IOException;
  import java.io.InputStream;
  import java.io.OutputStream;
  
  import android.content.Context;
  import android.database.sqlite.SQLiteDatabase;
  
  public class DbUtils {
      private static final String DB_PATH = "/data/data/com.rom.testdb/databases/";
      private static final String DB_NAME = "romskillDB.db";
  
      public static void createDatabaseIfNotExists(Context context) throws IOException {
          boolean createDb = false;
  
          File dbDir = new File(DB_PATH);
          File dbFile = new File(DB_PATH + DB_NAME);
          if (!dbDir.exists()) {
              dbDir.mkdir();
              createDb = true;
          }
          else if (!dbFile.exists()) {
              createDb = true;
          }
          else {
              // Check that we have the latest version of the db
              boolean doUpgrade = false;
  
              // Insert your own logic here on whether to upgrade the db; I personally
              // just store the db version # in a text file, but you can do whatever
              // you want.  I've tried MD5 hashing the db before, but that takes a while.
  
              // If we are doing an upgrade, basically we just delete the db then
              // flip the switch to create a new one
              if (doUpgrade) {
                  dbFile.delete();
                  createDb = true;
              }
          }
  
          if (createDb) {
              // Open your local db as the input stream
              InputStream myInput = context.getAssets().open(DB_NAME);
  
              // Open the empty db as the output stream
              OutputStream myOutput = new FileOutputStream(dbFile);
  
              // transfer bytes from the inputfile to the outputfile
              byte[] buffer = new byte[1024];
              int length;
              while ((length = myInput.read(buffer)) &gt; 0) {
                  myOutput.write(buffer, 0, length);
              }
  
              // Close the streams
              myOutput.flush();
              myOutput.close();
              myInput.close();
          }
      }
  
      public static SQLiteDatabase getStaticDb() {
          return SQLiteDatabase.openDatabase(DB_PATH + DB_NAME, null, SQLiteDatabase.OPEN_READONLY);
      }
  }
  </code></pre>
  
  <p>And again, thanks for your time!</p>