开发者

SQLiteDatabase created and never closed

开发者 https://www.devze.com 2023-02-22 00:48 出处:网络
i want display location name according city name selected in spinner from database but it display city name in spinner and i want it to display location according to city selected in spinner for city

i want display location name according city name selected in spinner from database but it display city name in spinner and i want it to display location according to city selected in spinner for city selection i use ::cur = myDataBase.rawQuery("select cityName from CityType", null); so it display city name in spinner. value comes from sqlite manager database save in assets folder..but when i go to select location it not display any location save in data base i.e. blank in spinner so location value not shown below is two java class DataBaseHelper.java and gqmain.java

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 开发者_Python百科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" );


   return cur; 
   }
   **public Cursor getloc()
   {
     String myPath = DB_PATH + DB_NAME;
     myDataBase = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READONLY);
     Cursor cur1;
     String saa = cabbookingapplication.Selection;
   //  String sql = " select CityType.rowid from CityType where CityType.cityName = "+saa;
     String sql = "SELECT CityType.rowid, Location.locationName FROM Location, CityType " +
     "WHERE Location.cityId = CityType.rowid " +
     "AND CityType.cityName = " + saa;
        //cur1 = myDataBase.rawQuery(
             //   " SELECT locationName FROM Location WHERE cityId in (" +sql+ ")",null);
     cur1 = myDataBase.rawQuery(
            sql, null);
     cur1.moveToFirst();


   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();
   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; 
   }

 }
and gqmain.java is

package cabs.h;
import java.io.IOException;
import android.R.string;
import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Spinner;
public class gqMain extends Activity {
public  Spinner spinner; 
public  Spinner spinner2; 
static String s13;
private SQLiteDatabase myDataBase;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.cform2);
    DataBaseHelper mDbHelper = new DataBaseHelper(this);
    mDbHelper = new DataBaseHelper(this);
    try {

        mDbHelper.createDataBase();

    } catch (IOException ioe) {

        throw new Error("Unable to create database......");

    }

    try {

        mDbHelper.openDataBase();

    }catch(SQLException sqle){

        throw sqle;

    }
    spinner = (Spinner) findViewById(R.id.sp1);  
    spinner2 = (Spinner) findViewById(R.id.sp2); 
    ArrayAdapter adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item);
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    spinner.setAdapter(adapter);

    ArrayAdapter adapter2 = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item);
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    spinner2.setAdapter(adapter2);
    Bundle b = getIntent().getExtras();
    final int pos = (b != null)?b.getInt("pos"):-1;

    Button button1 = (Button) findViewById(R.id.btn1);

    cabbookingapplication.Selection = (String)spinner.getSelectedItem();
    cabbookingapplication.Selection2 = (String)spinner2.getSelectedItem();
  button1.setOnClickListener(new View.OnClickListener() {

      public void onClick(View view) {
          //cabbookingapplication cab = new cabbookingapplication();

          cabbookingapplication.Selection = (String)spinner.getSelectedItem();
         String s11= cabbookingapplication.Selection;
          cabbookingapplication.Selection2 = (String)spinner2.getSelectedItem();
          String s12= cabbookingapplication.Selection2;
        EditText mTitleText1 = (EditText) findViewById(R.id.etext1);
         cabbookingapplication.Selection3 =( mTitleText1.getText().toString());
        String s13= cabbookingapplication.Selection3;

        EditText mTitleText2 = (EditText) findViewById(R.id.etext2);
        cabbookingapplication.Selection4 =( mTitleText2.getText().toString());
        String s14= cabbookingapplication.Selection4;
        String ff= s11+","+s12+s13+s14;



//        SharedPreferences settings = getSharedPreferences(PREFS_NAME,0);
//       mTitleText1.setText(String.valueOf(settings.getString("exactadd"," ")));
//          mTitleText2.setText(String.valueOf(settings. getString("nearby"," ")));
//       Editor ed = settings.edit(); 
//         ed.putString("exactadd",mTitleText1.getText().toString());
//         ed.putString("nearby",mTitleText2.getText().toString());
//         ed.commit();
         setResult(RESULT_OK);


         System.out.println("On Submit button Click.......");
         Intent i = new Intent(gqMain.this, ListActivity.class);
         System.out.println("text send ===== "+ff);
         //return edit text value along wid position of list item
         i.putExtra("text", ff);
         i.putExtra("pos", pos);
            startActivity(i);




      }

  });

    try{
         Cursor cur = mDbHelper.getcity(); 

         this.startManagingCursor(cur);
         int accountnameIndex = cur.getColumnIndexOrThrow("cityName");
        if(cur.moveToFirst()){
            do{
                //adapterForSpinner.add(c.getString(firstnameColumnIndex) + "aged " + c.getShort(ageColumnIndex)); 
                adapter.add(cur.getString(accountnameIndex));
            } while(cur.moveToNext());
        }

    } finally {

    }
    try{
     Cursor cur1 = mDbHelper.getloc(); 

     this.startManagingCursor(cur1);
     int accountnameIndex = cur1.getColumnIndexOrThrow("locationName");
       if(cur1.moveToFirst()){
           do{
            //adapterForSpinner.add(c.getString(firstnameColumnIndex) + "aged " + c.getShort(ageColumnIndex)); 
               adapter2.add(cur1.getString(accountnameIndex));
           } while(cur1.moveToNext());
       }

   } finally {

   }

   }
    }

so what to do???for value also show in location spinner according to city selected ..

i also tried this query in getloc()

String sql = "select CityType.rowid from CityType where CityType.cityName = "
    + saa;
cur1 = myDataBase.rawQuery(
    "SELECT locationName FROM Location WHERE cityId in (" + sql + ")", null);


   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.
   SqlLiteDatabase db=this.getReadableDatabase();
   //CLOSE DATABSE HERE
   db.close();

Check my comments in code.

0

精彩评论

暂无评论...
验证码 换一张
取 消