以下是一些基本代码:
where(); // Generates "flag0 = 'R' AND (flag211 & 1) == 1"
return database.query( RT, minColumns(), where(), null, null, null, orderby() );
在我的应用程序中,where()方法可以返回一个由于几个“好”原因而不存在的列名: (a)方法很复杂,我只是人 (b)该方法返回由用户直接输入的值。
在任何一种情况下,应用程序都会按预期崩溃:
SQLiteLog: (1) no such column: flag211
AndroidRuntime: FATAL EXCEPTION: AsyncTask #1
在发布之前如何验证查询(甚至只是WHERE子句的有效性)?
或者如何很好地捕获和处理异常?
答案 0 :(得分:0)
据我所研究,没有SQLite'干运行'设施本身。
但SQLite query()确实抛出了一个可以被捕获的异常,尽管缺乏明显的文档。
在我的问题中,我明确表示没有这样的专栏'事件被认为是正常的。
如果你在后台运行query(),这是一个经过测试的方法来捕获事件并礼貌地通知用户。
package StringAndArray;
public class Question_Four_Replace_Spaces {
public static void main(String[] args) {
String string = "Mr Shubham Dilip Yeole";
char[] array = string.toCharArray();
System.out.println("\n\nInput : " +string);
System.out.println("\n\nResult: "+method_1(array,string.length()));
method_1(array,string.length());
}
private static String method_1(char[] array, int length) {
int spaceCount = 0;
for(int i=0; i<array.length; i++){
if(array[i]==' ') spaceCount++;
}
int count = 0;
int newLength = length + spaceCount*2;
char[] newArray = new char[newLength];
for(int i= 0; i<array.length; i++){
if(array[i]==' '){
newArray[count++] = '%';
newArray[count++] = '2';
newArray[count++] = '0';
}else{
newArray[count] = array[i];
count++;
}
}
String newString1 = new String(newArray);
return newString1;
}
}
感谢@Catluc的有用提示。