我是Android和SQLite的新手。
我正在准备一个代码来查找表中是否存在给定的电话号码(在EditText框中给出的值)。
我使用了以下代码,但它显示错误:
c = dataBase.rawQuery("SELECT count(*) FROM "+ Dbasehelper.TABLE_NAME+
" WHERE "+ Dbasehelper.KEY_LNAME.toString()+" = " +
txtNum.getText().toString(),null);
保存的电话号码与以下表格类似 例如:
(775)758-96
LogCat记录:
04-29 08:56:09.085: D/OpenGLRenderer(5311): Flushing caches (mode 0)
04-29 08:56:11.095: E/okstartr(5311): bdok
04-29 08:56:11.105: E/okstartr(5311): bdok
04-29 08:56:11.105: I/SqliteDatabaseCpp(5311): sqlite returned: error code = 1, msg = near "655": syntax error, db=/data/data/com.pjct.waysafe/databases/WAS.db
04-29 08:56:11.105: D/AndroidRuntime(5311): Shutting down VM
04-29 08:56:11.105: W/dalvikvm(5311): threadid=1: thread exiting with uncaught exception (group=0x40a5c1f8)
04-29 08:56:11.115: E/AndroidRuntime(5311): FATAL EXCEPTION: main
04-29 08:56:11.115: E/AndroidRuntime(5311): android.database.sqlite.SQLiteException: near "655": syntax error: , while compiling: SELECT count(*) FROM friends WHERE phone = (755) 655-745
04-29 08:56:11.115: E/AndroidRuntime(5311): at android.database.sqlite.SQLiteCompiledSql.native_compile(Native Method)
04-29 08:56:11.115: E/AndroidRuntime(5311): at android.database.sqlite.SQLiteCompiledSql.<init>(SQLiteCompiledSql.java:68)
04-29 08:56:11.115: E/AndroidRuntime(5311): at android.database.sqlite.SQLiteProgram.compileSql(SQLiteProgram.java:143)
答案 0 :(得分:1)
您的问题是您将txtNum
的值直接插入到SQL字符串中,但SQL是一种必须引用字符串的编程语言。
为避免格式化此类问题,您应该使用参数:
c = dataBase.rawQuery("SELECT count(*) FROM "+ Dbasehelper.TABLE_NAME+
" WHERE "+ Dbasehelper.KEY_LNAME +" = ?",
new String[] { txtNum.getText() });
答案 1 :(得分:0)
请尝试此代码。
String sqlString = "SELECT count(*) FROM "+ Dbasehelper.TABLE_NAME+" WHERE "+ Dbasehelper.KEY_LNAME+" = '" + txtNum.getText().toString()+"'";
cursor = sqLiteDatabase.rawQuery(sqlString, null);
if (cursor != null & cursor.getCount() > 0) {
try {
if (cursor.moveToFirst()) {
do {
// do some things
} while (cursor.moveToNext());
}
} catch (Exception ex) {
ex.printStackTrace();
} finally {
cursor.close();
}
}
可能有效。希望。运气最好!
答案 2 :(得分:-1)
下面你好帮助
//Get Row Count
public int getCount() {
String countQuery = "SELECT * FROM " + TABLE_TEST;
int count = 0;
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.rawQuery(countQuery, null);
if(cursor != null && !cursor.isClosed()){
count = cursor.getCount();
cursor.close();
}
return count;
}
如果需要更多详细信息,请访问以下链接:Android Sqlite Tutorial