让用户在数据库

时间:2017-10-27 13:15:30

标签: java android sqlite

我试图让用户构建词汇表列表,然后从数组中的数组中保存不同的词汇表。为了让用户能够为每个列表命名,我尝试为每个表提供用户定义的名称。然后传输" nameOfList-String变量"是表的名称。但是这在编译时会给我一个错误。为了简单起见,我在这里做了一个替代代码,原则上代表了我想要实现的目标:

public class MainActivity extends AppCompatActivity {

String[] exampleArray = {"one", "two", "three"};
String nameOfList = "listName";


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

    SQLiteDatabase database 
    =getBaseContext().openOrCreateDatabase("exampleDatabase", 
    MODE_PRIVATE, null);
    database.execSQL("CREATE TABLE IF NOT EXISTS 
      '"+nameOfList+"'(numbers VARCHAR)");

    for (int x = 0; x <= 2; x++){
        database.execSQL("INSERT INTO '"+nameOfList+"' VALUES 
        (exampleArray[x])");
    }
  }
}

我收到以下错误: 引起:android.database.sqlite.SQLiteException:near&#34; [x]&#34 ;:语法错误(代码1):,同时编译:INSERT INTO&#39; listName&#39; VALUES(exampleArray [x])

如何将用户输入作为String变量,并使用String变量在SQLite中命名表,然后用数组中的字符串填充数据库? 感谢任何帮助: - )

2 个答案:

答案 0 :(得分:1)

您正在尝试插入字符串&#34; exampleArray [x]&#34;当我认为你想要数组exampleArray的元素x的内容时。因此,将插入更改为:

database.execSQL("INSERT INTO '"+nameOfList+"' VALUES (" + exampleArray[x] + ")");

答案 1 :(得分:-1)

我认为你应该这样做:

org.skife.jdbi.v2.exceptions.UnableToCreateStatementException: Exception while binding 'cities' [statement:"SELECT * FROM Universities WHERE Location IN (:cities)", arguments:{ positional:{}, named {cities:factory.ListArgumentFactory$1@6788168c}, finder:[]}]

您可以在此处找到更多信息:http://hmkcode.com/android-simple-sqlite-database-tutorial/ 希望这有帮助!