如何在android上的SQLite数据库中插入数据

时间:2015-02-11 12:23:52

标签: android sqlite sqliteopenhelper

我正在尝试在数据库表信号中插入数据, 它有5列(id,SSID,BSSID, RSSID, Poloha)。

我在Logcat中遇到错误:

E/SQLiteLog﹕ (1) table signals has no column named RSSID

E/SQLiteDatabase﹕ Error inserting BSSID=a0:f3:c1:d4:c0:79 RSSID=49 SSID=AIESECFlat Poloha=PCstol

android.database.sqlite.SQLiteException: table signals has no column named RSSID (code 1): , while compiling: INSERT INTO signals(BSSID,RSSID,SSID,Poloha) VALUES (?,?,?,?)"

我无法弄清楚为什么它不会创建所有列。感谢您的任何建议:)

主要活动

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        DatabaseHandler db = new DatabaseHandler(this);

        // Inserting Contacts
        db.addSignals(new Signals("AIESECFlat","a0:f3:c1:d4:c0:79","49","PCstol"));
}

DatabaseHandler类

public class DatabaseHandler extends SQLiteOpenHelper{

    // All Static variables
    private static final int DATABASE_VERSION = 1;  // Database Version
    // Database Name
    private static final String DATABASE_NAME = "localizationManager";
    // Signals table name
    private static final String TABLE_SIGNALS = "signals";

    // Signals Table Columns names
    private static final String KEY_ID = "id";
    private static final String KEY_SSID = "SSID";
    private static final String KEY_BSSID = "BSSID";
    private static final String KEY_RSSID = "RSSID";
    private static final String KEY_Poloha = "Poloha";

    public DatabaseHandler(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }
    // Creating Tables
    @Override
    public void onCreate(SQLiteDatabase db){
        String CREATE_SIGNALS_TABLE = "CREATE TABLE "+TABLE_SIGNALS +"("
                + KEY_ID + " INTEGER PRIMARY KEY,"
                + KEY_SSID + " TEXT,"
                + KEY_BSSID + " TEXT"
                + KEY_RSSID + " TEXT"
                + KEY_Poloha + " TEXT"
                + ")";
        db.execSQL(CREATE_SIGNALS_TABLE);
    }
    // Upgrading database
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion){
        // Drop older table if existed
        db.execSQL("DROP TABLE IF EXISTS " + TABLE_SIGNALS);

        // Create tables again
        onCreate(db);
    }

    public void addSignals(Signals signals){
        SQLiteDatabase db = this.getWritableDatabase();

        ContentValues values = new ContentValues();
        values.put(KEY_SSID,signals.get_SSID()); //signal SSID
        values.put(KEY_BSSID, signals.get_BSSID());
        values.put(KEY_RSSID, signals.get_RSSID());
        values.put(KEY_Poloha, signals.get_poloha());

        //Inserting Row
        db.insert(TABLE_SIGNALS, null, values);
        db.close(); //closing database connetion
    }
}

信号类 公共类信号{

//private variables
int _id;
String _SSID;
String _BSSID;
String _RSSID;
String _poloha;

//Empty constructor
public Signals(){    }

//constructor
public Signals(String _SSID, String _BSSID, String _RSSID, String _poloha) {
    this._SSID = _SSID;
    this._BSSID = _BSSID;
    this._RSSID = _RSSID;
    this._poloha = _poloha;
}
public String get_SSID() {
        return _SSID;
    }

public String get_BSSID() {
        return _BSSID;
    }

public String get_RSSID() {
        return _RSSID;
    }

public String get_poloha() {
        return _poloha;
    }

2 个答案:

答案 0 :(得分:0)

在列规范之间添加逗号:

+ KEY_BSSID + " TEXT,"
+ KEY_RSSID + " TEXT,"

并卸载您的应用,以便重新运行数据库助手onCreate()

答案 1 :(得分:0)

当您尝试创建表时,会发生错误。你错过了逗号。

我为你修好了:

String CREATE_SIGNALS_TABLE = "CREATE TABLE "+TABLE_SIGNALS +"("
    + KEY_ID + " INTEGER PRIMARY KEY,"
    + KEY_SSID + " TEXT,"
    + KEY_BSSID + " TEXT,"
    + KEY_RSSID + " TEXT,"
    + KEY_Poloha + " TEXT"
    + ")";