Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.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
在android sqlite参数上使用java String.format_Android_Sqlite_String.format - Fatal编程技术网

在android sqlite参数上使用java String.format

在android sqlite参数上使用java String.format,android,sqlite,string.format,Android,Sqlite,String.format,androidsqlite命令类似于 db.删除(表、whereClause、wherergs); whereClause是一个字符串,如“column1=?和column2=?” wherergs是一个字符串数组,其中包含将在where子句中替换的值。 是否有一种简单的方法可以从中获取解码字符串(用于日志记录)。 String.format似乎很接近,但不完全相同。这就是我的目标: Log.e(MY_DEBUG_TAG, "Error executing Delete(" + t

androidsqlite命令类似于 db.删除(表、whereClause、wherergs); whereClause是一个字符串,如“column1=?和column2=?” wherergs是一个字符串数组,其中包含将在where子句中替换的值。 是否有一种简单的方法可以从中获取解码字符串(用于日志记录)。 String.format似乎很接近,但不完全相同。这就是我的目标:

 Log.e(MY_DEBUG_TAG, 
     "Error executing Delete(" + table + ", " + 
            String.format(whereClause, whereArgs + ")");

如果仅出于记录目的,您可以尝试:

 Log.e(MY_DEBUG_TAG, 
     "Error executing Delete(" + table + ", " + 
            String.format(whereClause.replaceAll("\\?", "%s"), (Object[])whereArgs) + ")");

为什么要使自己容易受到SQL注入攻击(或解决所有需要的引用),而不是以正常方式使用参数化查询?我使用的是参数化查询。只是当我遇到问题时,我想看看日志,看看我想做什么。string[].ToString()没有提供关于数组中字符串的任何有用信息,因此我想知道如何将参数转换为易于阅读的字符串。我很抱歉,我忽略了这只是用于日志记录的事实。我个人只需要记录参数化SQL并分别记录参数。我要问的是,当出现错误时,堆栈跟踪会显示已编译的查询。它看起来像一个reqular SQL查询,具有良好的可读性。我想用相同的格式记录查询。但是将where子句和wherergs转换为友好字符串似乎很乏味。我希望有一个简单的方法。我想到了String.format,但它并不完全正确。我得到了这样一条警告:“String[]类型的参数应该显式地转换为Object[],以便从String类型调用varargs方法格式(String,Object…)。也可以将其转换为Object,以便进行varargs调用”如何使其消失?