ERROR/AndroidRuntime: Caused by: android.database.sqlite.SQLiteException: no

package cabs.h;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import android.R.string;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteException;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;
 
public class DataBaseHelper extends SQLiteOpenHelper{
   //The Android's default system path of your application database.
 private static final int DATABASE_VERSION = 1;
    private static String DB_PATH = "/data/data/cabs.h/databases/";
 private static String DB_NAME = "CabBookingDatabase.sqlite";
 private SQLiteDatabase myDataBase;
 private final Context myContext;
 
/**
 * Constructor
 * Takes and keeps a reference of the passed context in order to access to the application assets and resources.
 * @param context
 */
public DataBaseHelper(Context context) {
 
    super(context, DB_NAME, null, DATABASE_VERSION);
    this.myContext = context;
}  
 
/**
 * Creates a empty database on the system and rewrites it with your own database.
 * */
public void createDataBase() throws IOException{
 
   boolean dbExist = checkDataBase();
 
   if (dbExist) {
       Log.v("DB Exists", "db exists");
       // By calling this method here onUpgrade will be called on a
       // writeable database, but only if the version number has been
       // bumped
       this.getWritableDatabase();
       }
       dbExist = checkDataBase();
       if (!dbExist) {
       // By calling this method and empty database will be created into
       // the default system path of your application so we are gonna be
       // able to overwrite that database with our database.
       this.getReadableDatabase();
 
       try {
 
         copyDataBase();
 
      } catch (IOException e) {
 
          throw new Error("Error copying database");
 
       }
   }
 
}
 
/**
 * Check if the database already exist to avoid re-copying the file each time you open the application.
 * @return true if it exists, false if it doesn't
 */
private boolean checkDataBase(){
 
   SQLiteDatabase checkDB = null;
 
   try{
      String myPath = DB_PATH + DB_NAME;
      checkDB = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READONLY);
 
   }catch(SQLiteException e)
   {
 
      //database does't exist yet.
 
   }
 
   if(checkDB != null){
 
      checkDB.close();
 
   }
 
   return checkDB != null ? true : false;
}
 
/**
 * Copies your database from your local assets-folder to the just created empty database in the
 * system folder, from where it can be accessed and handled.
 * This is done by transfering bytestream.
 * */
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 bytes from the inputfile to the 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);
 
}
 
@Override
public synchronized void close() {
 
       if(myDataBase != null)
          myDataBase.close();
 
       super.close();
 
}
 
@Override
public void onCreate(SQLiteDatabase db) {
 
}
 
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    Log.w("tag", "Upgrading database from version which will destroy all old data");
    db.execSQL("DROP TABLE IF EXISTS liberQuoti");
    onCreate(db);
 
}
 
public Cursor getcity()
{
 String myPath = DB_PATH + DB_NAME;
 myDataBase = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READONLY);
 Cursor cur ;
 cur = myDataBase.rawQuery("select cityName from CityType", null);
 int citynameIndex = cur.getColumnIndexOrThrow("cityName");
//String valuecity = cur.getString(citynameIndex);
//Log.d("No.of tweets,,,,,,,", valuecity );
 
 cur.moveToFirst();
//Log.d("No.of tweets,,,,,,,", +accountnameIndex + "tgr" );
myDataBase.close();
 
 
return cur;
}
//vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
public Cursor getloc()
{
 String myPath = DB_PATH + DB_NAME;
 myDataBase = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READONLY);
 Cursor cur1,cur2;
 String saa = cabbookingapplication.Selection;
 String sql="select CityType.rowid from CityType where CityType.cityName="+saa+"";
//  int sql=2;
 cur1 = myDataBase.rawQuery("select locationName from Location where cityId=("+sql+")", null);
 cur1.moveToFirst();
 myDataBase.close();
return cur1;
}
//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 public Cursor getservice()
{
 String myPath = DB_PATH + DB_NAME;
 myDataBase = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READONLY);
 Cursor cur3;
 cur3 = myDataBase.rawQuery("select serviceType from ServiceType", null);
 cur3.moveToFirst();
 myDataBase.close();
return cur3;
}
public Cursor getcabtype()
{
 String myPath = DB_PATH + DB_NAME;
 myDataBase = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READONLY);
 Cursor cur4;
 cur4 = myDataBase.rawQuery("select carType from CarType", null);
 cur4.moveToFirst();
 myDataBase.close();
return cur4;
}
public Cursor getcabservice()
{
 String myPath = DB_PATH + DB_NAME;
 myDataBase = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READONLY);
 Cursor cur5;
 cur5 = myDataBase.rawQuery("select cabFeatures from CabFeatures", null);
 cur5.moveToFirst();
 myDataBase.close();
return cur5;
}
public Cursor getday()
{
 String myPath = DB_PATH + DB_NAME;
 myDataBase = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READONLY);
 Cursor cur6;
 cur6 = myDataBase.rawQuery("select dayTravell from DayTravell", null);
 cur6.moveToFirst();
 myDataBase.close();
return cur6;
}
 
}
       
String sql = "SELECT CityType.rowid, Location.locationName FROM Location, CityType " +
    "WHERE Location.cityId = CityType.rowid " +
    "AND CityType.cityName = " + saa;
       
public class DataBaseHelper extends SQLiteOpenHelper {
    ...
 
    private SQLiteDatabase mDb;
 
    // change openDatabase to this:
    // call it ONCE in onCreate of your activity
    public SQLiteDatabase open() throws SQLException {
        if (mDb != null)
            return; // already opened
        mDb = this.getReadableDatabase();
        return mDb;
    }
    // call this in the onDestroy of your activity
    public void close() {
        if (mDb == null)
            return; // db is not open
        mDb.close();
        mDb = null;
    }
 
 
    // Change getLoc and your other methods to be something like this
    public Cursor getLocation() {
        if (mDb == null)
            throw new NullPointerException("Database has not been opened by activity");
 
        String saa = cabbookingapplication.Selection;
        String sql = "SELECT CityType.rowid, Location.locationName FROM Location, CityType " +
    "WHERE Location.cityId = CityType.rowid " +
    "AND CityType.cityName = " + saa;
        return mDb.rawQuery(sql);
    }
    ...
}
       
if (cursor.getCount() > 0) {
    // we have at least 1 record
    while (cursor.moveToNext()) {
        // do something with current row
    }
} else {
   // no rows, show an empty message or something
}
       
String sql = "select CityType.rowid from CityType where CityType.cityName = "
    + saa;
cur1 = myDataBase.rawQuery(
    "SELECT locationName FROM Location WHERE cityId in (" + sql + ")", null);
       
String sql = "SELECT locationName FROM Location, CityType " +
    "where cityId = CityType.rowid " +
    "AND CityType.cityName = " + saa;
       
SQLiteDatabase db = getReadableDatabase();
db.close();

  

import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteException;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;

public class DataBaseHelper extends SQLiteOpenHelper{
   //The Android's default system path of your application database.
 private static final int DATABASE_VERSION = 1;
    private static String DB_PATH = "/data/data/cabs.h/databases/";
 private static String DB_NAME = "CabBookingDatabase.sqlite";
 private SQLiteDatabase myDataBase;
 private final Context myContext;

  

posted @ 2012-06-25 12:27  wgw8299  阅读(354)  评论(0)    收藏  举报