Хорошо, так что, возможно, я чего-то здесь упускаю, но я только начал работать с SQL и Android, и, насколько я вижу, обновления и вставки обратно в базу данных должны обрабатываться индивидуально?
Я могу получить Курсор, содержащий несколько записей, но если я хочу применить обновление к каждой записи в курсоре, я могу только увидеть, как это сделать по отдельности, используя ContentValues и Update (), и тогда курсор требует перезагрузки??
То же самое, если я хочу создать несколько новых записей, кажется, что они должны быть вставлены по отдельности?Могу ли я не создать список и массовую вставку?
Мне это кажется медленным и громоздким, и должно быть что-то, о чем я еще не знаю (поиск ответов мне не удался ... скорее всего из-заиспользуя неправильные термины, являющиеся новыми для android / java)
Вот очень простой пример того, чего я в основном хочу достичь, однако должен быть лучший способ для достижения этой функциональности.(Я знаю, что здесь есть и другие плохие практики, просто создание быстрого примера)
public class HelloSQL extends Activity {
SQLiteDatabase myDB = null;
String TableName = "myTable";
ContentValues myVals = new ContentValues();
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
String Data = "";
// Create a Database.
try {
myDB = this.openOrCreateDatabase("myTestDB", MODE_PRIVATE, null);
// Create a Table in the Database.
myDB.execSQL("CREATE TABLE IF NOT EXISTS " + TableName
+ " ( id INTEGER PRIMARY KEY AUTOINCREMENT,"
+ " Value1 INTEGER, Value2 INTEGER);");
myDB.execSQL("DELETE FROM " + TableName);
// insert value1
for (int i = 0; i < 100; i++) {
myVals.put("Value1", i);
myDB.insert(TableName, null, myVals);
}
// retrieve data from database
Cursor c = myDB.rawQuery("SELECT * FROM " + TableName, null);
int colId = c.getColumnIndex("id");
int col1 = c.getColumnIndex("Value1");
int col2 = c.getColumnIndex("Value2");
Random generator = new Random();
// Loop through all values and update value2
c.moveToFirst();
if (c != null) {
do {
long id = c.getLong(colId);
int val1 = c.getInt(col1);
int randomVal = generator.nextInt(99);
myVals.put("Value1", val1);
myVals.put("Value2", randomVal);
myDB.insert(TableName, null, myVals);
myDB.update(TableName, myVals, "id=?",new String[] {Long.toString(id)});
} while (c.moveToNext());
}
// requery data
c = myDB.rawQuery("SELECT * FROM " + TableName, null);
// display all values
c.moveToFirst();
if (c != null) {
do {
int val1 = c.getInt(col1);
int val2 = c.getInt(col2);
Data = Data + Integer.toString(val1) + " " + Integer.toString(val2) + "\n";
} while (c.moveToNext());
}
TextView tv = new TextView(this);
tv.setText(Data);
setContentView(tv);
} catch (Exception e) {
Log.e("Error", "Error", e);
} finally {
if (myDB != null)
myDB.close();
}
}
Заранее спасибо, не ожидайте, что кто-то переписывает все, что я здесь сделал, но вправильное направление и ссылки на образец будет принята с благодарностью.