Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Java字符串变量中的参数在SQLite数据库中创建新表?_Java_Sql_Database_Sqlite_Android Studio - Fatal编程技术网

如何使用Java字符串变量中的参数在SQLite数据库中创建新表?

如何使用Java字符串变量中的参数在SQLite数据库中创建新表?,java,sql,database,sqlite,android-studio,Java,Sql,Database,Sqlite,Android Studio,我正在尝试使用一个预先存在的Java字符串变量在SQLite中创建一个新表,但是变量名没有被识别为Java。。。我怎样才能解决这个问题 String name1 = textViewPerson1.getText().toString(); String name2 = textViewPerson2.getText().toString(); String name3 = textViewPerson3.getText().toString(); try{

我正在尝试使用一个预先存在的Java字符串变量在SQLite中创建一个新表,但是变量名没有被识别为Java。。。我怎样才能解决这个问题

    String name1 = textViewPerson1.getText().toString();
    String name2 = textViewPerson2.getText().toString();
    String name3 = textViewPerson3.getText().toString();

    try{
        SQLiteDatabase database = this.openOrCreateDatabase("NewUsers",MODE_PRIVATE,null);
        database.execSQL("CREATE TABLE IF NOT EXISTS newUsers (name VARCHAR, hitCount INT(2))");
        database.execSQL("INSERT INTO newusers (name,age) VALUES (name1,17)");
        database.execSQL("INSERT INTO newusers (name,age) VALUES (name2, 16)");
    }catch (Exception e){
        e.printStackTrace();
    }

}

我建议您在sql语句中使用引号,并指定varchar的值,如:

database.execSQL("CREATE TABLE IF NOT EXISTS 'newUsers' ('name' VARCHAR(25), 'hitCount' INT(2))");
您应该在插入行中退出“字符串”上下文,如下所示:

database.execSQL("INSERT INTO 'newusers' (name,age) VALUES ('"+name1+"',17)");

显然还有更多的清理选项,如StringBuilder,但这应该会有所帮助。

您需要使用name1和name2作为参数。请解释一下?SQL注入如何?为了避免注入,请使用参数,而不是字符串生成器或owasp库等,但这不是问题所在。