2011-04-04 27 views
-1

我希望顯示位置名稱根據城市名稱從數據庫中選擇微調,但它顯示城市名稱在微調,我希望它顯示的位置根據城市選擇我選擇城市選擇使用:: cur = myDataBase.rawQuery(「從CityType中選擇cityName」,null);所以它顯示城市名稱在微調。值來自sqlite管理器數據庫保存在資產folder..but當我去選擇位置它不顯示任何位置保存在數據庫中,即在微調框中空白,所以位置值不顯示下面是兩個Java類 DataBaseHelper.java和gqmain.javaSQLiteDatabase創建並從未關閉

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"); 


    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 { 

    } 

    } 
    } 

這樣做的一個用於值也顯示位置微調,根據選擇的城市..

我也嘗試在getloc()

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

回答

0
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(); 
此查詢

請在代碼中查看我的意見。

相關問題