2015-10-25 19 views
-3

這裏是DBHelper類 package com.example.taxirecordapp;我的代碼有什麼問題? 「沒有這樣的表格:TaxiFile」

import android.content.Context; 
import android.database.sqlite.SQLiteDatabase; 
import android.database.sqlite.SQLiteOpenHelper; 

public class DBHelper extends SQLiteOpenHelper { 

    public DBHelper(Context c, String dbName, int dbVer) { 
     super(c, dbName, null, dbVer); 
    } 

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

     String driverSQL = "CREATE TABLE DriverFile (DriverNumber TEXT PRIMARY KEY NOT NULL, DriverFName TEXT, DriverLName TEXT, DriverDateHired TEXT, DriverContactNumber TEXT, DriverAddress TEXT)"; 
     String taxiSQL = "CREATE TABLE TaxiFile (TaxiPlateNumber TEXT PRIMARY KEY NOT NULL, TaxiDriverNumber TEXT, TaxiRentDate TEXT, TaxiDriverBalance INTEGER)"; 
     db.execSQL(taxiSQL); 
     db.execSQL(driverSQL); 

    } 

    @Override 
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
     // TODO Auto-generated method stub 
     String driverSQL = "DROP TABLE IF EXISTS DriverFile"; 

     String taxiSQL = "DROP TABLE IF EXISTS TaxiFile"; 
     db.execSQL(taxiSQL); 
     db.execSQL(driverSQL); 
     onCreate(db); 
    } 

} 

的AddTaxi類

package com.example.taxirecordapp; 

import android.app.Activity; 
import android.content.ContentValues; 
import android.content.Intent; 
import android.database.Cursor; 
import android.database.sqlite.SQLiteDatabase; 
import android.os.Bundle; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.Toast; 

public class AddTaxi extends Activity { 

    EditText etPlateNumber, etDate, etBalance, etDriverNumber; 
    Button btnSave, btnBack; 
    SQLiteDatabase dbase; 
    int position; 
    int balance = 0; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 

     // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.add_taxi); 

     DBHelper helper = new DBHelper(getApplication(), "TaxiRecordAppDB", 1); 
     dbase = helper.getWritableDatabase(); 

     etPlateNumber = (EditText) findViewById(R.id.etPlateNumber); 
     etDate = (EditText) findViewById(R.id.etDate); 
     etBalance = (EditText) findViewById(R.id.etBalance); 
     etDriverNumber = (EditText) findViewById(R.id.etDriverNumber); 
     btnSave = (Button) findViewById(R.id.btnSave); 
     btnBack = (Button) findViewById(R.id.btnBack); 

     Intent i = getIntent(); 
     position = i.getIntExtra("position", position); 

     Cursor rsCursor; 
     String[] rsFields = { "DriverNumber", "DriverFName", "DriverLName", 
       "DriverDateHired", "DriverContactNumber", "DriverAddress" }; 
     rsCursor = dbase.query("DriverFile", rsFields, null, null, null, null, 
       null, null); 
     rsCursor.moveToPosition(position); 
     if (rsCursor.isAfterLast() == false) { 
      if (rsCursor.getPosition() == position) { 
       etDriverNumber.setText(rsCursor.getString(0).toString()); 
      } 
     } 
     rsCursor.close(); 

     btnSave.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 

       if (etPlateNumber.getText().toString().length() == 0) { 
        Toast.makeText(getApplicationContext(), 
          "Please input Plate Number!", Toast.LENGTH_SHORT) 
          .show(); 

       } else if (etDate.getText().toString().length() == 0) { 
        Toast.makeText(getApplicationContext(), 
          "Please input Date Rented!", Toast.LENGTH_SHORT) 
          .show(); 

       } 

       else { 
        if (etBalance.getText().toString().length() == 0) { 
         balance = 0; 

        } else { 
         balance = Integer.parseInt(etBalance.getText() 
           .toString()); 
        } 
        AddTaxiRecord(etPlateNumber.getText().toString(), 
          etDriverNumber.getText().toString(), etDate 
            .getText().toString(), balance); 
       } 
      } 
     }); 

     btnBack.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       Intent i = new Intent(AddTaxi.this, MainActivity.class); 
       startActivity(i); 
      } 
     }); 

    } 

    public void AddTaxiRecord(String plateNumber, String driverNumber, 
      String date, int balance) { 
     try { 
      Cursor rsCursor; 
      String[] rsFields = { "TaxiPlateNumber", "TaxiDriverNumber", 
        "TaxiRentDate", "TaxiDriverBalance" }; 
      rsCursor = dbase.query("TaxiFile", rsFields, "TaxiPlateNumber = " 
        + plateNumber, null, null, null, null, null); 
      rsCursor.moveToFirst(); 
      if (rsCursor.isAfterLast() == false) { 
       Toast.makeText(getApplicationContext(), 
         "Plate number already exist!", Toast.LENGTH_SHORT) 
         .show(); 
      } else { 
       ContentValues rsValues = new ContentValues(); 
       rsValues.put("TaxiPlateNumber", plateNumber); 
       rsValues.put("TaxiDriverNumber", driverNumber); 
       rsValues.put("TaxiRentDate", date); 
       rsValues.put("TaxiDriverBalance", balance); 
       dbase.insert("TaxiFile", null, rsValues); 
       Toast.makeText(getApplicationContext(), 
         "Record Successfully Saved!", Toast.LENGTH_SHORT) 
         .show(); 
      } 
     } catch (Exception e) { 

     } 
    } 

} 

和工作正常

package com.example.taxirecordapp; 

import android.app.Activity; 
import android.content.ContentValues; 
import android.content.Intent; 
import android.database.Cursor; 
import android.database.sqlite.SQLiteDatabase; 
import android.os.Bundle; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.Toast; 

public class AddDriver extends Activity { 

    EditText etDriverNumber, etFirstName, etLastName, etDateHired, 
      etContactNumber, etAddress; 
    Button btnSave, btnBack; 
    SQLiteDatabase dbase; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.add_driver); 

     etDriverNumber = (EditText) findViewById(R.id.etDriverNumber); 
     etFirstName = (EditText) findViewById(R.id.etFirstName); 
     etLastName = (EditText) findViewById(R.id.etLastName); 
     etDateHired = (EditText) findViewById(R.id.etDateHired); 
     etContactNumber = (EditText) findViewById(R.id.etContactNumber); 
     etAddress = (EditText) findViewById(R.id.etAddress); 
     btnSave = (Button) findViewById(R.id.btnSave); 
     btnBack = (Button) findViewById(R.id.btnBack); 

     DBHelper helper = new DBHelper(getApplication(), "TaxiRecordAppDB", 1); 
     dbase = helper.getWritableDatabase(); 

     btnSave.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       if (etDriverNumber.getText().toString().length() == 0) { 
        Toast.makeText(getApplicationContext(), 
          "Please input Driver Number!", Toast.LENGTH_SHORT) 
          .show(); 

       } else if (etFirstName.getText().toString().length() == 0) { 
        Toast.makeText(getApplicationContext(), 
          "Please input Driver's First Name!", 
          Toast.LENGTH_SHORT).show(); 

       } else if (etLastName.getText().toString().length() == 0) { 
        Toast.makeText(getApplicationContext(), 
          "Please input Driver's Last Name!", 
          Toast.LENGTH_SHORT).show(); 

       } else if (etDateHired.getText().toString().length() == 0) { 
        Toast.makeText(getApplicationContext(), 
          "Please input Driver's Date Hired!", 
          Toast.LENGTH_SHORT).show(); 

       } else if (etContactNumber.getText().toString().length() == 0) { 
        Toast.makeText(getApplicationContext(), 
          "Please input Driver's Contact Number!", 
          Toast.LENGTH_SHORT).show(); 

       } else if (etAddress.getText().toString().length() == 0) { 
        Toast.makeText(getApplicationContext(), 
          "Please input Driver's Address!", 
          Toast.LENGTH_SHORT).show(); 
       } 

       else { 
        AddDriverRecord(Integer.parseInt(etDriverNumber.getText() 
          .toString()), etFirstName.getText().toString(), 
          etLastName.getText().toString(), etDateHired 
            .getText().toString(), etContactNumber 
            .getText().toString(), etAddress.getText() 
            .toString()); 
       } 
      } 
     }); 

     btnBack.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       Intent i = new Intent(AddDriver.this, 
         MainActivity.class); 
       startActivity(i); 
      } 
     }); 
    } 

    public void AddDriverRecord(int driverNumber, String firstName, 
      String lastName, String dateHired, String contactNumber, 
      String address) { 
     try { 
      Cursor rsCursor; 
      String[] rsFields = { "DriverNumber", "DriverFName", "DriverLName", 
        "DriverDateHired", "DriverContactNumber", "DriverAddress" }; 
      rsCursor = dbase.query("DriverFile", rsFields, "DriverNumber = " 
        + driverNumber, null, null, null, null, null); 
      rsCursor.moveToFirst(); 
      if (rsCursor.isAfterLast() == false) { 
       Toast.makeText(getApplicationContext(), 
         "Driver number already exist!", Toast.LENGTH_SHORT) 
         .show(); 
      } else { 
       ContentValues rsValues = new ContentValues(); 
       rsValues.put("DriverNumber", driverNumber); 
       rsValues.put("DriverFName", firstName); 
       rsValues.put("DriverLName", lastName); 
       rsValues.put("DriverDateHired", dateHired); 
       rsValues.put("DriverContactNumber", contactNumber); 
       rsValues.put("DriverAddress", address); 
       dbase.insert("DriverFile", null, rsValues); 
       Toast.makeText(getApplicationContext(), 
         "Record Successfully Saved!", Toast.LENGTH_SHORT) 
         .show(); 
      } 
     } catch (Exception e) { 

     } 
    } 
} 

回答

1

我看不出任何問題AddDriver類。所以我的猜測是在添加DriverFile表後添加了TaxiFile表。

爲了確保onUpgrade被調用時,你需要增加數據庫的版本,但你仍然在使用1:

DBHelper helper = new DBHelper(getApplication(), "TaxiRecordAppDB", 1); 

這可能意味着TaxiFile,從未創建。

每個數據庫模式更改都需要增加數據庫版本以確保調用onUpgrade。

編輯:

雖然發展你能做到快捷:保持第1版,但刪除設備上的應用程序或清除應用信息數據(包括將迫使數據庫的完全新的創造)。

被警告:只要您發佈應用程序,該快捷方式就不會工作,因爲用戶決不會被要求這樣做。在這種情況下,您真的需要自己處理模式更改和版本增量。