0
我想創建一個簡單的應用程序,通過點擊一個按鈕,在數據庫中添加由傳感器聽者返回當前值允許的用戶, 於是我開始創建一個SQLite數據庫(我第一次使用sqlite)。 我創建的所有必要的類(根據標準)。的Android源碼插入返回錯誤
這裏是我的代碼:
*類SSnsor.java:
public class SSensor {
private int id;
private String Accx;
private String Accy;
private String Accz;
private String Gyrox;
private String Gyroy;
private String Gyroz;
public SSensor() {};
public SSensor(String Accx, String Accy,String Accz, String Gyrox,String Gyroy, String Gyroz){
this.Accx = Accx;
this.Accy = Accy;
this.Accz = Accz;
this.Gyrox = Gyrox;
this.Gyroy = Gyroy;
this.Gyroz = Gyroz;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getAccx() {
return Accx;
}
public String getAccy() {
return Accy;
}
public String getAccz() {
return Accz;
}
public String getGyrox() {
return Gyrox;
}
public String getGyroy() {
return Gyroy;
}
public String getGyroz() {
return Gyrox;
}
public void setGyrox(String Gyrox) {
this.Gyrox = Gyrox;
}
public void setGyroy(String Gyroy) {
this.Gyroy = Gyroz;
}
public void setGyroz(String Gyroz) {
this.Gyroz = Gyroz;
}
public void setAccx(String Accx) {
this.Accx = Accx;
}
public void setAccy(String Accy) {
this.Accy = Accy;
}
public void setAccz(String Accz) {
this.Accz = Accz;
}
}
*類MaBaseSQLite它允許創建和表的升級:
public class MaBaseSQLite extends SQLiteOpenHelper {
private static final String TABLE_SENSORS = "table_sensors";
private static final String COL_ID = "ID";
private static final String COL_AX = "AX";
private static final String COL_AY = "AY";
private static final String COL_AZ = "AZ";
private static final String COL_GX = "GX";
private static final String COL_GY = "GY";
private static final String COL_GZ = "GZ";
private static final String CREATE_BDD = "CREATE TABLE " + TABLE_SENSORS + " ("
+ COL_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + COL_AX + " TEXT NOT NULL, "
+ COL_AY + " TEXT NOT NULL, " + COL_AZ + " TEXT NOT NULL, " + COL_GX + " TEXT NOT
NULL, " + COL_GY + " TEXT NOT NULL, "+ COL_GZ + " TEXT NOT NULL);";
public MaBaseSQLite(Context context, String name, CursorFactory factory, int version) {
super(context, name, factory, version);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(CREATE_BDD);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS " + TABLE_SENSORS + ";");
onCreate(db);
}
}
*所述SensorsBDD類(DAO類):
public class SensorsBDD {
private static final int VERSION_BDD = 1;
private static final String NOM_BDD = "senssor.db";
private static final String TABLE_SENSORS = "table_sensors";
private static final String COL_ID = "ID";
private static final int NUM_COL_ID = 0;
private static final String COL_AX = "AX";
private static final int NUM_COL_AX = 1;
private static final String COL_AY = "AY";
private static final int NUM_COL_AY = 2;
private static final String COL_AZ = "AZ";
private static final int NUM_COL_AZ = 3;
private static final String COL_GX = "GX";
private static final int NUM_COL_GX = 4;
private static final String COL_GY = "GY";
private static final int NUM_COL_GY = 5;
private static final String COL_GZ = "GZ";
private static final int NUM_COL_GZ = 6;
private SQLiteDatabase bdd;
private MaBaseSQLite maBaseSQLite;
public SensorsBDD(Context context){
maBaseSQLite = new MaBaseSQLite(context, NOM_BDD, null, VERSION_BDD);
}
public void open(){
bdd = maBaseSQLite.getWritableDatabase();
}
public void close(){
bdd.close();
}
public SQLiteDatabase getBDD(){
return bdd;
}
public long insertSensor(SSensor sensor){
ContentValues values = new ContentValues();
values.put(COL_ID, sensor.getId());
values.put(COL_AX, sensor.getAccx());
values.put(COL_AY, sensor.getAccy());
values.put(COL_AZ, sensor.getAccz());
values.put(COL_GX, sensor.getGyrox());
values.put(COL_GY, sensor.getGyroy());
values.put(COL_GZ, sensor.getGyroz());
return bdd.insert(TABLE_SENSORS, null, values);
}
}
*在我的活動課,我所做的就是這樣的:
public class MainActivity extends ActionBarActivity {
SensorsBDD sensorBdd ;
SSensor s;
Button save=null;
long i;
String str;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
s = new SSensor ("a","b","c","d","e","f");//silly i know
sensorBdd = new SensorsBDD(this);
save = (Button) findViewById(R.id.bouton);
save.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
i= sensorBdd.insertSensor(s);
str = String.valueOf(i);
Toast.makeText(MainActivity.this, str, Toast.LENGTH_LONG).show();
}
});
}
@Override
protected void onResume() {
sensorBdd.open();
super.onResume();
}
@Override
protected void onPause() {
sensorBdd.close();
super.onPause();
}
}
我第一次單擊該按鈕敬酒顯示0(新插入的行的行ID),然後每當我按一下按鈕敬酒顯示-1表示發生錯誤。
如果我發出一個平庸的錯誤(是一個機器人新手),請提前幫助,並提前抱歉。
非常感謝@laalto,你讓我很快樂 – user3510821