Você não está consultando o _id do banco de dados (somente a coluna KEY_NAME2), portanto não pode obtê-lo do adaptador.
Está linha:
Cursor cur = (Cursor) parent.getItemAtPosition(position);
está totalmente errado. Você está tentando converter uma String (que é retornada por
ArrayAdapter<String> para um cursor, que nunca pode funcionar. O que você precisa fazer é usar um
CursorAdapter (ou SimpleCursorAdapter ) para seu ListView. O cursor deve consultar pelo menos _id e KEY_NAME2. Com este adaptador o
getItem(int position) retornará um cursor definido para a posição solicitada. Então tudo que você precisa fazer é cursor.getInt(cursor.getColumnIndex("_id")) e você está lá.