2016-06-08 2 views
0

는 로그 캣 창으로 표시의 예외입니다구문 오류 안드로이드 SQLite는 : 근처 "그룹"여기

06-08 11:25:55.532 8480-8480/example.com.shareit E/SQLiteLog: (1) near "group": syntax error  
06-08 11:25:55.542 8480-8480/example.com.shareit E/SQLiteDatabase: Error inserting amount=100 share1=0 share2=100 share3=0 paid2=0 share4=0 paid3=0 description=Food paid1=100 paid4=0 group=4 date=6/8/2016 
06-08 11:25:55.542 8480-8480/example.com.shareit E/SQLiteDatabase: android.database.sqlite.SQLiteException: near "group": syntax error (code 1): , while compiling: INSERT INTO contacts(amount,share1,share2,share3,paid2,share4,paid3,description,paid1,paid4,group,date) VALUES (?,?,?,?,?,?,?,?,?,?,?,?) 

희망 누군가가 이것에 의해 이해 이것은 내 InsertContact()

public long insertContact(int amount, String description, String date, int paid1, int paid2,int paid3,int paid4, int share1, int share2,int share3,int share4,long group) { 
    ContentValues initialValues = new ContentValues(); 
    initialValues.put(KEY_AMOUNT, amount); 
    initialValues.put(KEY_DESCRIPTION, description); 
    initialValues.put(KEY_DATE, date); 

    initialValues.put(KEY_PAID1, paid1); 
    initialValues.put(KEY_PAID2, paid2); 
    initialValues.put(KEY_PAID3, paid3); 
    initialValues.put(KEY_PAID4, paid4); 

    initialValues.put(KEY_SHARE1, share1); 
    initialValues.put(KEY_SHARE2, share2); 
    initialValues.put(KEY_SHARE3, share3); 
    initialValues.put(KEY_SHARE4, share4); 
    initialValues.put(KEY_GROUP, group); 


    return db.insert(DATABASE_TABLE, null, initialValues); 
} 

이며이 어디 나는

public void saveBill(View view) { 

    description = ETdescription.getText().toString(); 
    date = TVdate.getText().toString(); 
    amount = Integer.parseInt(ETamount.getText().toString()); 
    paid1 = Integer.parseInt(ETpaid1.getText().toString()); 
    paid2 = Integer.parseInt(ETpaid2.getText().toString()); 
    paid3 = Integer.parseInt(ETpaid3.getText().toString()); 
    paid4 = Integer.parseInt(ETpaid4.getText().toString()); 
    share1 = Integer.parseInt(ETshare1.getText().toString()); 
    share2 = Integer.parseInt(ETshare2.getText().toString()); 
    share3 = Integer.parseInt(ETshare3.getText().toString()); 
    share4 = Integer.parseInt(ETshare4.getText().toString()); 
    sumPaid = paid1 + paid2 + paid3 + paid4; 
    sumShare = share1 + share2 + share3 + share4; 

    if (a == false) { 
     Toast.makeText(this, "Please Select Date", Toast.LENGTH_SHORT).show(); 
    } else { 
     if ((amount == sumPaid) && (amount == sumShare)) { 
      DBAdapter db = new DBAdapter(this); 
      //---add a contact--- 
      db.open(); 
      long id = db.insertContact(amount, description, date, paid1, paid2, paid3, paid4, share1, share2, share3, share4, ++index); 
      //id = db.insertContact("Mary Jackson", "[email protected]"); 
      db.close(); 
      Toast.makeText(this, "Saved", Toast.LENGTH_SHORT).show(); 
     } else { 
      Toast.makeText(this, "Sum of Shares or Paid is not equal to total amount", Toast.LENGTH_SHORT).show(); 
     } 
    } 


} 
+0

테이블 구조를 공유하십시오. – ganero

답변

4

"그룹"이것은 causin 인이 메서드를 호출하고 g 문제. 그룹 대신 그룹 (또는 다른 무엇이라도)을 사용해보십시오.

이유 : group은 sql의 예약어 (here by group by 절)입니다.

SELECT name, sum(price) FROM YOUR_TABLE GROUP BY name 

따라서 GROUP 또는 그룹을 사용할 수 없습니다.

그래서 방법은 다음과 같아야합니다 또한 당신이 KEY_GROUP = "group";을 정의한 경우

public long insertContact(int amount, String description, String date, 
int paid1, int paid2,int paid3, 
int paid4, int share1, int share2, 
int share3,int share4,long mGroup){ 

    //Put code here. 

    initialValues.put(KEY_GROUP, mGroup); 

    } 

편집 할 수 있습니다. 그것도 다른 것으로 변경하십시오. 마지막 한 점. 도 사용하지 마십시오. 또한 예약되어 있습니다.

행운을 빈다.

+1

나는 그것을 사랑한다 !!!!! 그것은 내 문제를 해결하고 애플 리케이션은 곧 플레이 스토어에있을 것입니다. 그 모든 도움이 당신에게서 왔습니다. 대단히 감사합니다. –

+0

도와 드리겠습니다. 행운을 빕니다 – Nabin

0

고객 테이블에서 그룹을 열 이름으로 사용하고 있습니까? 둘 다 예약어이기 때문에 문제는 '날짜'와 '그룹'을 열 이름으로 사용하는 것 같습니다. 예를 들어 열 이름을 date1 및 group1로 수정하십시오.

관련 문제