2016-06-19 9 views
9

मैं जानना चाहता हूं कि SQLiteConstraintException: foreign key constraint अपवाद के बारे में जानकारी प्राप्त करना संभव है या नहीं।एंड्रॉइड स्क्लाइट में विदेशी कुंजी बाधा के कारण कॉलम के बारे में जानकारी कैसे प्राप्त कर सकता हूं?

मुझे यह जानने की जरूरत है कि कॉलम ने विदेशी कुंजी बाधा का उल्लंघन किया।

क्या इन सूचनाओं को अपवाद से प्राप्त करने का कोई तरीका है?

यह भी अच्छा हो सकता है अगर मैं उस बाधा का नाम प्राप्त कर सकूं।

+0

क्या आपके कैच क्लॉज में लापता बाधा का अनुमान लगाना संभव है? डेटा डंप पकड़ने में मदद कर सकता है। – navit

उत्तर

1

स्तंभ नाम कि SQLiteConstraintException से विदेशी कुंजी बाधा का उल्लंघन लगता है कोई सीधा रास्ता: विदेशी कुंजी बाधा अपवाद। लॉग

04-27 11:15:27.152: E/AndroidRuntime(22031): FATAL EXCEPTION: main 
    04-27 11:15:27.152: E/AndroidRuntime(22031): android.database.sqlite.SQLiteConstraintException:   
    foreign key constraint failed (code 19) 
    04-27 11:15:27.152: E/AndroidRuntime(22031): at android.database.sqlite.SQLiteConnection.nativeExecuteForChangedRowCount(Native Method) 
    04-27 11:15:27.152: E/AndroidRuntime(22031): at android.database.sqlite.SQLiteConnection.executeForChangedRowCount(SQLiteConnection.java:727) 
    04-27 11:15:27.152: E/AndroidRuntime(22031): at android.database.sqlite.SQLiteSession.executeForChangedRowCount(SQLiteSession.java:754) 
    04-27 11:15:27.152: E/AndroidRuntime(22031): at android.database.sqlite.SQLiteStatement.executeUpdateDelete(SQLiteStatement.java:64) 
    04-27 11:15:27.152: E/AndroidRuntime(22031): at android.database.sqlite.SQLiteDatabase.delete(SQLiteDatabase.java:1494) 
    04-27 11:15:27.152: E/AndroidRuntime(22031): at it.jackpot21.personalmoney.DbAdapter.SQLdelete(DbAdapter.java:89) 
    04-27 11:15:27.152: E/AndroidRuntime(22031): at it.jackpot21.personalmoney.PersoneActivity$5.onClick(PersoneActivity.java:215) 

ऊपर लॉग

04 में निम्नलिखित विदेशी कुंजी बाधा exception.In:

लेकिन तुम आपरेशन पा सकते हैं (हटाने के लिए, सम्मिलित करें, बनाने आदि) ऐसा नाम है जो SQLiteConstraintException बढ़ा -27 11: 15: 27.152: ई/एंड्रॉइड रनटाइम (22031): औरroid.database.sqlite.SQLiteDatabase.delete (SQLiteDatabase.java:1494)

यह हमें ऑपरेशन बढ़ाने अपवाद हटा देता है। फिर आप पाते हैं कि आपके कोड में कौन सी पंक्ति इस अपवाद को बढ़ाती है और मैन्युअल रूप से अपनी क्वेरी और कॉलम जांचती है।

+0

आप इन सूचनाओं को अपवाद से प्राप्त कर सकते हैं लेकिन यह मेरा समाधान नहीं है। – breceivemail

1

नए SQLite संस्करण तालिका संदेश को त्रुटि संदेश में जोड़ते हैं, लेकिन किसी भी मामले में आपको कॉलम नाम नहीं मिलते हैं।

+0

कौन सा संस्करण ?? – breceivemail

4

मुझे लगता है कि आप निम्नलिखित qestion में उत्तर मिल सकता है: समाधान 2 antoino द्वारा पोस्ट की गई पर

Possible to get specific error details from Android SQLiteConstraintException?

देखो।

+0

उनके समाधान – breceivemail

+1

में कोई मूल्यवान डेटा नहीं है समाधान आपको सटीक त्रुटि के बारे में अधिक जानकारी प्राप्त करने के लिए आवश्यक सब कुछ प्रदान करता है। आप स्टैक ट्रेस डंप प्रिंट कर सकते हैं, जो पर्याप्त होना चाहिए। – iamseiko

0

आप अपने एसक्यूएल को एसक्लाइट ब्राउज़र, http://sqlitebrowser.org/ पर कॉपी कर सकते हैं और वहां त्रुटि को दोहराने का प्रयास कर सकते हैं और इससे आपको अधिक जानकारी मिलनी चाहिए।

संबंधित मुद्दे