如何使用Java字符串变量中的参数在SQLite数据库中创建新表?
我正在尝试使用一个预先存在的Java字符串变量在SQLite中创建一个新表,但是变量名没有被识别为Java。。。我怎样才能解决这个问题如何使用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{
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库等,但这不是问题所在。