Я пытаюсь сохранить различную большую строку чисел в базе данных sql и для чисел выше примерно 10 цифр, при экспорте она имеет научную форму, например, 3.5674E15.
С числами ниже этойпроблем нет, но мне нужно экспортировать значения из базы данных в точной форме, например, 45739473920284, а не в научной форме, так как некоторые из последних нескольких цифр потеряны.
Это мой адаптер базы данных:
public class DBAdapterWorkouts {
private static final String KEY_ROWID = "id";
private static final String KEY_NAME = "name";
private static final String KEY_DATE = "date";
private static final String KEY_EXERCISESTRING = "exercisestring";
private static final String KEY_SUPERSETSTRING = "supersetstring";
private static final String TAG = "DBAdapter2";
private static final String DATABASE_NAME = "CustomWorkoutsDB";
private static final String DATABASE_TABLE = "customworkouts";
private static final int DATABASE_VERSION = 1;
private static final String DATABASE_CREATE = "create table if not exists customworkouts (id integer primary key autoincrement, " + "name string, date long, exercisestring string, supersetstring string);";
private DatabaseHelper DBHelper;
private SQLiteDatabase db;
public DBAdapterWorkouts(Context ctx) {
DBHelper = new DatabaseHelper(ctx);
}
//---opens the database---
public DBAdapterWorkouts open() throws SQLException {
db = DBHelper.getWritableDatabase();
return this;
}
//---closes the database---
public void close() {
DBHelper.close();
}
//---insert a record into the database---
public long insertRecord(String name, long date, String exercisestring, String supersetstring) {
ContentValues initialValues = new ContentValues();
initialValues.put(KEY_NAME, name);
initialValues.put(KEY_DATE, date);
initialValues.put(KEY_EXERCISESTRING, exercisestring);
initialValues.put(KEY_SUPERSETSTRING, supersetstring);
return db.insert(DATABASE_TABLE, null, initialValues);
}
public void deleteName(int id){
open();
String query = "DELETE FROM " + DATABASE_TABLE + " WHERE "
+ KEY_ROWID + " = '" + id + "'";
Log.d(TAG, "deleteName: query: " + query);
db.execSQL(query);
close();
}
//---deletes all records---
public void reset() throws SQLException {
db.delete(DATABASE_TABLE, null,null);
db.execSQL("DELETE FROM SQLITE_SEQUENCE WHERE NAME = '" + DATABASE_TABLE + "'");
this.DBHelper.onCreate(db);
}
//---retrieves all the records---
public Cursor getAllRecords() {
return db.query(DATABASE_TABLE, new String[]{KEY_ROWID, KEY_NAME, KEY_DATE, KEY_EXERCISESTRING, KEY_SUPERSETSTRING}, null, null, null, null, null, null);
}
//---retrieves a particular record---
public Cursor getRecord(long rowId) throws SQLException {
Cursor mCursor =
db.query(true, DATABASE_TABLE, new String[]{KEY_ROWID, KEY_NAME, KEY_DATE, KEY_EXERCISESTRING, KEY_SUPERSETSTRING}, KEY_ROWID + "=" + rowId, null, null, null, null, null, null);
if (mCursor != null) {
mCursor.moveToFirst();
}
return mCursor;
}
private static class DatabaseHelper extends SQLiteOpenHelper {
DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
try {
db.execSQL(DATABASE_CREATE);
} catch (SQLException e) {
e.printStackTrace();
}
}
@Override
public void onUpgrade(SQLiteDatabase db, int arg1, int arg2) {
}
}
}
Это в моей деятельности, где данные сохраняются и загружаются из базы данных:
dbWorkouts.open();
Cursor c = dbWorkouts.getAllRecords();
boolean exists = false;
try {
if (c.moveToFirst()){
do {
if (c.getString(1).equals(etxtWorkoutName.getText().toString())){
exists = true;
}
}while (c.moveToNext());
}
} catch (Exception e){
e.printStackTrace();
}
if (exists){
Toast.makeText(getActivity(), "Please choose a workout name that doesn't already exist", Toast.LENGTH_LONG).show();
}else{
Calendar calendar = Calendar.getInstance();
long date = calendar.getTimeInMillis();
String name = etxtWorkoutName.getText().toString();
dbWorkouts.insertRecord(name, date, stringExerciseOrder, stringSupersets);
Toast.makeText(getActivity(), "Workout saved!", Toast.LENGTH_LONG).show();
Log.w("app", stringExerciseOrder);
}
dbWorkouts.close();
В приведенном выше примере журнал производит число, которое я хочу сохранить (длинная строкачисел с именем stringExerciseOrder).Проблема возникает, когда я использую следующий код для извлечения значения.
dbWorkouts.open();
Cursor c = dbWorkouts.getAllRecords();
try {
if (c.moveToFirst()){
do {
Log.w("app", c.getString(3));
}while (c.moveToNext());
}
} catch (Exception e){
e.printStackTrace();
}
dbWorkouts.close();
Вывод второго журнала представлен в научной форме.
Любая помощь будет принята с благодарностью.
Спасибо