[英]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.