簡體   English   中英

如何在Android上的SQLite數據庫中插入數據

[英]How to insert data in SQLite database on android

我試圖在數據庫表信號中插入數據,該信號有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;
    }

在列規格之間添加逗號:

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

並卸載您的應用程序,以便重新運行數據庫助手onCreate()

當您嘗試創建表時,會發生錯誤。 您缺少逗號。

我為您修復了:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM