简体   繁体   中英

How to insert data in SQLite database on android

I am trying to insert data in a database table signals , which has 5 columns( id,SSID,BSSID, RSSID, Poloha ).

I am getting an Error in 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 (?,?,?,?)"

I can't figure out why it doesn't create all columns. Thanks for any advice :)

MAIN ACTIVITY

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 class

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

Signal class public class Signals {

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

Add commas between your column specifications:

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

and uninstall your app so that database helper onCreate() is rerun.

Your mistake happens when you attempt to create the table. You're missing commas.

I fixed it for you:

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM