Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 什么';我的代码怎么了&引用;没有这样的表格:TaxiFile“;_Android_Database_Eclipse_Sqlite - Fatal编程技术网

Android 什么';我的代码怎么了&引用;没有这样的表格:TaxiFile“;

Android 什么';我的代码怎么了&引用;没有这样的表格:TaxiFile“;,android,database,eclipse,sqlite,Android,Database,Eclipse,Sqlite,下面是DBHelper类 包com.example.taxirecordapp import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; public class DBHelper extends SQLiteOpenHelper { public DBHelper(Context c,

下面是DBHelper类 包com.example.taxirecordapp

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

}
出租车班

    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) {

        }
    }

}
还有AddDriver类,它工作正常

    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) {

        }
    }
}

我看不出有什么问题。我猜是在添加DriverFile表之后添加了TaxiFile表

为确保调用onUpgrade,您需要增加数据库版本,但仍使用1:

DBHelper helper = new DBHelper(getApplication(), "TaxiRecordAppDB", 1);
这可能意味着永远不会创建TaxiFile

每次数据库模式更改都需要增加数据库版本,以确保调用onUpgrade

编辑:

在开发过程中,您可以使用快捷方式:保留版本1,但删除设备上的应用程序或清除应用程序信息中的数据(两者都将强制全新创建数据库)

请注意:发布应用程序后,该快捷方式不会立即生效,因为用户不应该被要求这样做。在这种情况下,您确实需要自己处理模式更改和版本增量