Вие не заявявате _id от базата данни (само колоната KEY_NAME2), така че не можете да го получите от адаптера.
Този ред:
Cursor cur = (Cursor) parent.getItemAtPosition(position);
е напълно погрешно. Опитвате се да предавате низ (който се връща от ArrayAdapter<String> към курсор, който никога не може да работи.
Това, което трябва да направите, е да използвате CursorAdapter (или SimpleCursorAdapter ) за вашия ListView. Курсорът трябва да прави заявка поне за _id и KEY_NAME2.
С този адаптер getItem(int position) ще върне курсора, настроен на исканата позиция. Тогава всичко, което трябва да направите, е cursor.getInt(cursor.getColumnIndex("_id")) и вие сте там.