所以我在使用以下代码时遇到问题,想知道是否还有其他方法可以创建和删除表,其中表名取自用户,以下代码在使用“'”单引号时出错。请帮忙public void droptable(String tablename) { SQLiteDatabase db =this.getWritableDatabase(); db.execSQL("DROP TABLE IF EXISTS " + tablename);} public void createtable(String tablename){ SQLiteDatabase db = this.getWritableDatabase(); String query = String.format("CREATE TABLE IF NOT EXISTS %s ( %s INTEGER PRIMARY KEY AUTOINCREMENT , %s TEXT )",tablename,COLUMN0,COLUMN1); db.execSQL(query);}有一个更好的方法吗?
1 回答
慕雪6442864
TA贡献1812条经验 获得超5个赞
除非您的应用程序将导出 SQLite 数据库本身,并且用户打算在其他地方使用该 SQLite 数据库,否则用户将永远不会看到此表,除非通过您的应用程序。
这为您提供了多种选择:
不要使用用户输入的值作为表名。相反,自己生成一个有效的表名,并保留生成的名称和用户输入的每个表的“显示名称”的映射。
通过删除不受支持的字符,将用户输入的值转换为有效的表名。
将用户输入的值括在引号 (
"%s"
) 中,但如果用户输入带引号的表名,则会出现问题。通过拒绝非标准字符作为您的一部分,防止用户输入无效的表名
EditText
验证用户输入的值并在他们输入会导致 SQL 错误的内容时显示错误对话框
添加回答
举报
0/150
提交
取消