Mysql 在数据库中插入文本如何处理';
您好,我正在将一般注释动态插入到我的数据库中。我的查询如下所示:Mysql 在数据库中插入文本如何处理';,mysql,sql,sqlite,android-sqlite,Mysql,Sql,Sqlite,Android Sqlite,您好,我正在将一般注释动态插入到我的数据库中。我的查询如下所示: String sql = "insert into table (comment) values('"+ dynamic_comment + "');"; 当使用插入类似以下内容时,我遇到一个错误: 我做得很好 因为当时我的查询变成: insert into table (comment) values('I'm doing great'); “我做得很好” 有人能告诉我如何克服这个问题,以及在使用数据库时,我可以面对多少其他
String sql = "insert into table (comment) values('"+ dynamic_comment + "');";
当使用插入类似以下内容时,我遇到一个错误:
我做得很好
因为当时我的查询变成:
insert into table (comment) values('I'm doing great');
“我做得很好”
有人能告诉我如何克服这个问题,以及在使用数据库时,我可以面对多少其他类似的问题吗
谢谢您需要在插入字符串变量之前对其进行转义
String sql = "insert into table (comment) values('"+ DatabaseUtils.sqlEscapeString(dynamic_comment) + "');";
上述方法容易受到SQL注入攻击。为了安全起见,请了解更多有关使用的信息 与您相同的查询的示例如下:
SQLiteDatabase db = dbHelper.getWritableDatabase();
SQLiteStatement stmt = db.compileStatement("INSERT INTO `table` (`comment`) values(?)");
stmt.bindString( 1, dynamic_comment );
stmt.execute();
插入前需要转义字符串变量
String sql = "insert into table (comment) values('"+ DatabaseUtils.sqlEscapeString(dynamic_comment) + "');";
上述方法容易受到SQL注入攻击。为了安全起见,请了解更多有关使用的信息 与您相同的查询的示例如下:
SQLiteDatabase db = dbHelper.getWritableDatabase();
SQLiteStatement stmt = db.compileStatement("INSERT INTO `table` (`comment`) values(?)");
stmt.bindString( 1, dynamic_comment );
stmt.execute();
您需要使用准备好的语句,将原始字符串连接到查询中已经是很长一段时间的错误做法 发件人:
您需要使用准备好的语句,将原始字符串连接到查询中已经是很长一段时间的错误做法 发件人:
你不是第一个遇到这个问题的人。您是否尝试搜索答案?请使用。您不是第一个遇到此问题的人。你尝试过搜索答案吗?使用。始终使用参数化语句,否则你只是在请求SQL注入攻击。嗯,我也不知道sqlite/android中的准备语句。谢谢编辑reply now@pablochandint help,插入abcd并将结果作为'abcd'。始终使用参数化语句,否则您只是在请求SQL注入攻击。嗯,我也不知道sqlite/android中准备好的语句。谢谢正在编辑reply now@pablochandint help,插入abcd并将结果作为'abcd'。为什么在此处放置1:stmt.bindString(1,动态注释);看一看-我正在将第一个参数(
?
)绑定到动态注释
的值。为什么在这里放1:stmt.bindString(1,动态注释);看看-我正在将第一个参数(?
)绑定到动态注释的值。