마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

JSON 데이터 SQLite 에 insert 문제가 있습니다.

0 추천

json 데이터를 받아온후에 처리하는 방식입니다

mDBOpenHelper = new DBOpenHelper(LoginActivity.current);
			mDBOpenHelper.Syncopen();
			JSONArray jsonArray;
			try {
				jsonArray = new JSONArray(result);
				for(int i = 0 ; i < jsonArray.length(); i++){
				JSONObject obj = jsonArray.getJSONObject(i);
				if(obj.has("User_ID")){
				LoginfoVo loginfovo =	
                                new LoginfoVo(obj.getString("User_ID"),obj.getString("Password"),obj.getString("User_Role"),obj.getString("USER_NAME"),obj.getString("User_Department"));
				Log.i("TAG",".........."+loginfovo.toString());
						mDBOpenHelper.insertLoginfo(loginfovo);	
//이하 생략

데이터를 받고나서 생성자를 통해 넣을때는 DB 에 제대로 들어갑니다

 

			LoginfoVo loginfovo  = gson.fromJson(obj.toString(), LoginfoVo.class);
			mDBOpenHelper.insertLoginfo(loginfovo);	

헌데 gson이나 jackson 등 parser 를 이용해 vo 를 만들어 넣으면 db 에 들어가질 않는것 같습니다.

Logi 로 vo.toString 으로 둘다 생성자로 넣는것과 파싱된vo 를 확인해도 똑같은데 insert 에서 익셉션이나 에러가 터지지는 않는데

재사용시 db.getcount 를 해보면 0 값입니다.

 

이문제에대하여 혹시 아이디어 있으신분 있나요?

익명사용자 님이 2013년 7월 22일 질문

1개의 답변

0 추천
exception 을 올리세요
aucd29 (218,390 포인트) 님이 2013년 7월 22일 답변
07-22 15:29:02.056: E/SQLiteDatabase(25571): Error inserting Barcode=400000000113 Install_Company_Phone=null Usage_Flag=1 Install_Company_Name=null FObject_ID=113 SerialNum=null Company_Name=null Operating_Date=null FObject_Name=I포인트 Building_Object_Object_Name=I포인트 Install_Date=null Purchasing_Date=null Install_Cost=null FObject_TypeName=기계설비 Company_Phone=null
07-22 15:29:02.056: E/SQLiteDatabase(25571): android.database.sqlite.SQLiteConstraintException: FacilityInfoTbl.SerialNum may not be NULL (code 19)
07-22 15:29:02.056: E/SQLiteDatabase(25571):     at android.database.sqlite.SQLiteConnection.nativeExecuteForLastInsertedRowId(Native Method)
07-22 15:29:02.056: E/SQLiteDatabase(25571):     at android.database.sqlite.SQLiteConnection.executeForLastInsertedRowId(SQLiteConnection.java:906)
07-22 15:29:02.056: E/SQLiteDatabase(25571):     at android.database.sqlite.SQLiteSession.executeForLastInsertedRowId(SQLiteSession.java:788)

DBinsert 를 insertOrconflict 를 써서 익셉션을 패스해버렸네요

null 값때문에 db 에 못들어 간거 같습니다 처리해주면 될듯;;
json 전체를 넣는게 아닌가요?
json  에 데이터를 db 필드에 맞추고 있는건가요?
후자라면 null 데이터가 들어갈 수 있게 디비를 변경하세요
후자였네요
text is not null 구문으로 테이블을 생성하고 있었네요
감사합니다.
...