В основном, я хочу проверить, не указано ли имя пользователя в базе данных. Поскольку я довольно новый, я не знаю, как это сделать и что пробовал, но я получаю ошибку с этими кодами. Я серьезно не знаю, есть ли лучший способ сделать это, и если это так, пожалуйста, скажите мне, спасибо.SQLite: проверка, если значение существует
private long addEntry(String strUsename, String strName,
String strFirstName, String strPassword) {
// TODO Auto-generated method stub
ContentValues cv = new ContentValues();
cv.put(KEY_USERNAME, strUsename);
cv.put(KEY_FIRSTNAME, strFirstName);
cv.put(KEY_NAME, strName);
cv.put(KEY_PASSWORD, strPassword);
return accountDB.insert(DATABASE_TABLE, null, cv);
}
public String Verification_add(String ver_username, String strName,
String strFirstName, String strPassword){
String result = "";
String[] columns = {KEY_ROWID, KEY_USERNAME, KEY_NAME, KEY_FIRSTNAME, KEY_PASSWORD};
Cursor c = accountDB.query(DATABASE_TABLE, columns, KEY_USERNAME + "=" + ver_username, null, null, null, null);
if (!c.moveToFirst()){ // IF IT'S FALSE, that mean the username is not taken, ritgh ?
addEntry(ver_username, strName, strFirstName, strPassword);
c.close();
return result = "Account[...] code: 1 !";
}else{
c.close();
return result = "Username already [...] code:2 ";
}
}
Вот отчет LogCat:
02-24 23:09:32.201: E/Verification_add(1389): MY ERROR !!
02-24 23:09:32.201: E/Verification_add(1389): java.lang.NullPointerException
02-24 23:09:32.201: E/Verification_add(1389): at com.example.communication.DataBaseRegistration.Verification_add(DataBaseRegistration.java:79)
02-24 23:09:32.201: E/Verification_add(1389): at com.example.communication.Registration.onClick(Registration.java:42)
02-24 23:09:32.201: E/Verification_add(1389): at android.view.View.performClick(View.java:4202)
02-24 23:09:32.201: E/Verification_add(1389): at android.view.View$PerformClick.run(View.java:17340)
02-24 23:09:32.201: E/Verification_add(1389): at android.os.Handler.handleCallback(Handler.java:725)
02-24 23:09:32.201: E/Verification_add(1389): at android.os.Handler.dispatchMessage(Handler.java:92)
02-24 23:09:32.201: E/Verification_add(1389): at android.os.Looper.loop(Looper.java:137)
02-24 23:09:32.201: E/Verification_add(1389): at android.app.ActivityThread.main(ActivityThread.java:5039)
02-24 23:09:32.201: E/Verification_add(1389): at java.lang.reflect.Method.invokeNative(Native Method)
02-24 23:09:32.201: E/Verification_add(1389): at java.lang.reflect.Method.invoke(Method.java:511)
02-24 23:09:32.201: E/Verification_add(1389): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
02-24 23:09:32.201: E/Verification_add(1389): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
02-24 23:09:32.201: E/Verification_add(1389): at dalvik.system.NativeStart.main(Native Method)
Спасибо!
Где именно строка 79 (расположение исключения нулевого указателя) в коде? – ebarrenechea
c может быть пустым. См. Http://stackoverflow.com/questions/5457699/cursor-adapter-and-sqlite-example –
Строка 79: Курсор c = accountDB.query (DATABASE_TABLE, столбцы, KEY_USERNAME + "=" + ver_username, null , null, null, null); – R00t