为Live磁传感器数据创建SQLite数据库

时间:2017-05-16 02:18:43

标签: java android database sqlite

我是Android平台的新手。我想将实时磁传感器数据直接记录到存储中的sQLite数据库。我编写代码来获取磁数据,但我无法创建数据库。我在下面粘贴了代码。任何帮助都会很棒。

提前谢谢。

// code for Database Helper


public class DBHelper extends SQLiteOpenHelper{
    private static final String DB_NAME = "Mag_Positioning.db";
    private static final int DB_VERSION = 1;
    private static final String COL_ID = "ID";
    private static final String COL_XAXIS = "X-AXIS";
    private static final String TABLE_NAME = "MAP_COORDINATES";
    private static final String COL_YAXIS = "Y-AXIS";
    private static final String COL_ZAXIS = "Z-AXIS";



    public DBHelper(Context context){
        super(context, DB_NAME, null, DB_VERSION);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        String createTable = "CREATE TABLE " + TABLE_NAME + "(" + COL_ID + " INTEGER PRIMARY KEY AUTOINCREMENT," + COL_XAXIS + " INTEGER," + COL_YAXIS + " INTEGER," + COL_ZAXIS + " INTEGER" + " )";
        db.execSQL(createTable);

    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
        onCreate(db);
    }

    public void insert(Integer xaxis, Integer yaxis, Integer zaxis){
        SQLiteDatabase db = this.getWritableDatabase();

    }
}
  // code for getting magnetic sensor data
  // Its just fragment of code
  
  public class MainActivity extends AppCompatActivity implements SensorEventListener {
    Sensor magnetometer;
    SensorManager sm;
    TextView magnetismx;
    TextView magnetismy;
    TextView magnetismz;
    DBHelper dbHelper;
    public float a;
    public float b;
    public float c;
    boolean recording = false;
    boolean stoprecord = false;

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

        dbHelper = new DBHelper(this);
        
 // I have declared some button here...
 
  @Override
    public void onSensorChanged(SensorEvent event) {
        Sensor sensor = event.sensor;
        a = event.values[0];
        b = event.values[1];
        c = event.values[2];
        if (sensor.getType() == Sensor.TYPE_MAGNETIC_FIELD) {

            magnetismx.setText(Float.toString(event.values[0]));
            magnetismy.setText(Float.toString(event.values[1]));
            magnetismz.setText(Float.toString(event.values[2]));

            if (!recording) {
                return;
            }
            if(stoprecord){
                return;
            }
        }
            try {

                writeToCsv(Float.toString(a), Float.toString(b), Float.toString(c));
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();

            }

ps:数据库的代码也不起作用..没有创建表。

1 个答案:

答案 0 :(得分:0)

我自己解决了这个问题。数据库类有一些问题。我已将以下代码用于数据库助手类。

ublic class DBHelper extends SQLiteOpenHelper {
    private static final String DB_NAME = "Mag_Positioning.db";
    private static final int DB_VERSION = 1;

    //Table for measurement
    private static final String ID = "id";
    private static final String MAP_ID = "Mapid";
    private static final String COLXAXIS = "X_AXIS";
    private static final String TABLENAME = "Fingerprint";
    private static final String COLYAXIS = "Y_AXIS";
    private static final String COLZAXIS = "Z_AXIS";
    private static final String MAPX = "X_CORD";
    private static final String MAPY = "Y_CORD";
    private static final String DIFF = "Diff";

    private static final String FINAL = "FINAL";

    private static final String KEY_FINGERPRINT_ID = "id";
    private static final String KEY_MAP_NAME = "map_name";
    private static final String KEY_POSITION_X = "position_x";
    private static final String KEY_POSITION_Y = "position_y";

    private static DBHelper mInstance;

    public DBHelper(Context context) {
        super(context, DB_NAME, null, DB_VERSION);
    }

    public static DBHelper getInstance() {
        if (mInstance == null) {
            synchronized (DBHelper.class) {
                if (mInstance == null) {
                    mInstance = new DBHelper(BaseApp.getApp());
                }
            }
        }

        return mInstance;
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        String createTable = "CREATE TABLE " + TABLENAME + "("
                + ID + " INTEGER PRIMARY KEY,"
                + MAP_ID + " INTEGER ," +
                MAPX + " INTEGER, " +
                MAPY + " INTEGER, " +
                COLXAXIS + " REAL, " +
                COLYAXIS + " REAL, " +
                COLZAXIS + " REAL, " +
                FINAL + " REAL )";
        db.execSQL(createTable);

    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        db.execSQL("DROP TABLE IF EXISTS " + TABLENAME);
        onCreate(db);
    }

    public void insert(int a, int b, int c, float x, float y, float z, float d) {
        SQLiteDatabase db = this.getWritableDatabase();
        ContentValues contentvalues = new ContentValues();
        contentvalues.put("Mapid", a);
        contentvalues.put("X_CORD", b);
        contentvalues.put("Y_CORD", c);
        contentvalues.put("X_AXIS", x);
        contentvalues.put("Y_AXIS", y);
        contentvalues.put("Z_AXIS", z);
        contentvalues.put("FINAL", d);
        db.insert("Fingerprint", null, contentvalues);
        db.close();
    }

    public void deleteAllFingerprints() {
        SQLiteDatabase db = this.getWritableDatabase();
        db.delete(TABLENAME, null, null); // delete all fingerprints
        db.close();
    }

    public Cursor getAllData() {
        SQLiteDatabase db = this.getWritableDatabase();
        Cursor cur = db.rawQuery("select * from " + TABLENAME, null);
        return cur;
    }
}