在SQLite android中添加大量数据

在SQLite android中添加大量数据,android,sqlite,Android,Sqlite,我是android新手,也许这是个愚蠢的问题,但我不明白。看,我正在设计一个游戏,我们给一些人打分。因此,我希望在安装时将人员的姓名存储在数据库中,然后将他们的分数最初设置为0,这将根据用户的选择进行更新。在这里,我不知道该如何输入数据,因为大约有100个名字和他们的分数。使用INSERT INTO()语句将使其类似于100条语句。那么有没有像我们可以通过字符串之类的简单方法呢。只是猜测而已。任何帮助都将不胜感激。您不需要在SQL语句中硬编码名称或分数。而是使用参数 var command =

我是android新手,也许这是个愚蠢的问题,但我不明白。看,我正在设计一个游戏,我们给一些人打分。因此,我希望在安装时将人员的姓名存储在数据库中,然后将他们的分数最初设置为0,这将根据用户的选择进行更新。在这里,我不知道该如何输入数据,因为大约有100个名字和他们的分数。使用INSERT INTO()语句将使其类似于100条语句。那么有没有像我们可以通过字符串之类的简单方法呢。只是猜测而已。任何帮助都将不胜感激。

您不需要在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();
}

然后循环浏览所有的名字和分数。

我建议您使用事务。 您可以将此声明存档,说明您希望使用带有
beginTransaction()
的事务,使用循环在
makeAllInserts()
上执行所有插入,如果一切正常,则调用
setTransactionSuccessful()
以在批处理操作中执行此操作。如果出现问题,您将在finally部分调用endTransaction(),而不设置success,这将执行回滚

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);
    }
}
public void makeAllInserts(){
对于(int i=0;i
如果您还想了解nullColumnHack,这里有一个很好的链接->


希望有帮助。

谢谢你的回复。我不太明白这是怎么回事,因为我不知道参数的概念。请提供一些示例代码或类似代码的文档链接。在谷歌上搜索“SQLite绑定参数”。上面的代码使用System.Data.SQLite和C#;你做这件事的方式在C中有些不同。谢谢你。我喜欢这个主意。这对我有用。但现在我有一个不同的问题。你能检查一下吗:我很高兴听到@Decoder回答了你的另一个问题。看一看:)