2014-11-30 2 views
0

Я новичок в android и, возможно, его глупый вопрос, но я не получаю его. Смотрите, я разрабатываю игру, в которой мы даем оценки некоторым людям. Поэтому я хочу сохранить имена людей в базе данных во время установки, а затем их оценки будут установлены на 0, которые будут обновлены в соответствии с тем, что выбирают пользователи. Здесь я не могу понять, как я должен вводить данные, так как это будет около 100 имен и их оценки. Использование инструкции INSERT INTO() сделает ее равной 100 операторам. Итак, есть ли какой-нибудь короткий метод, как мы можем это сделать через строки или что-то в этом роде. Впрочем, догадываться. Любая помощь будет оценена по достоинству.добавить большой объем данных в SQLite android

ответ

0

Я рекомендую вам использовать транзакцию. Вы можете архивировать это, указав, что хотите использовать транзакцию с beginTransaction(), сделать все вставки на makeAllInserts() с помощью цикла, и если все будет работать, тогда позвоните setTransactionSuccessful(), чтобы сделать это в пакетной операции. Если что-то пойдет не так, в секции finally вы вызовете endTransaction() без установки успеха, это приведет к откату.

db.beginTransaction(); 
try { 
    makeAllInserts(); 
    db.setTransactionSuccessful(); 
}catch { 
    //Error in between database transaction 
}finally { 
    db.endTransaction(); 
} 

Для функции makeAllInserts, что-то подобное может работать:

public void makeAllInserts() { 
    for(int i = 0; i < myData.size(); i++) { 
     myDataBase = openDatabase(); 
     ContentValues values = new ContentValues(); 
      values.put("name", myData.get(i).getName()); 
      values.put("score", myData.get(i).getScore()); 
     myDataBase.insert("MYTABLE", nullColumnHack, values); 
    } 
} 

Если вы хотите знать о nullColumnHack здесь у вас есть хорошая ссылка ->https://stackoverflow.com/a/2663620/709671

Надеется, что это помогает.

+0

Спасибо человеку. Как эта идея. Это сработало для меня. Но теперь у меня другая проблема. Не могли бы вы проверить: http://stackoverflow.com/questions/27259658/duplicate-data-issue-android-sqlite – Decoder

+0

Я рад слышать, что @Decoder ответил на ваш другой вопрос. Взглянуть :) – axierjhtjz

1

Вы не записываете имена или баллы в свои SQL-выражения. Вместо этого вы используете параметры.

var command = new SQLiteCommand() 
command.CommandText = "INSERT INTO Scores (name, score) VALUES(@name, @score)"; 
command.CommandType = CommandType.Text; 

foreach (var item in data) 
{ 
    command.Parameters.Add(new SQLiteParameter("@name", item.Name)); 
    command.Parameters.Add(new SQLiteParameter("@score", item.Score)); 
    command.ExecuteNonQuery(); 
} 

, а затем просто пропустите все имена и оценки.

+0

Thanx для ответа. Я точно не понимаю, как это будет работать, поскольку я не знаю понятия параметров. Можете ли вы предоставить ссылку на какой-либо документ для примера кода или что-то в этом роде. – Decoder

+0

Сделайте поиск по Google для «параметров привязки SQLite». В приведенном выше коде используются System.Data.SQLite и C#; то, как вы это делаете, несколько отличается от C. –

Смежные вопросы