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

sqlite에 insert하는 부분에서 자꾸 오류가 나요 ㅠㅠ

0 추천

<<insert 소스 >>

public void insert(View view){
    Bundle extras = getIntent().getExtras();
    if(extras!=null){
        int Value = extras.getInt("id");
        if(Value>0){
            if(mydb.updateAssignment(id,a_title.getText().toString(),a_date.getText().toString(),subject.getText().toString()
                    ,contents.getText().toString())){
                Toast.makeText(getApplicationContext(),"수정되었음.", Toast.LENGTH_SHORT).show();
                Intent intent = new Intent(getApplicationContext(),MainActivity.class);
                startActivity(intent);
            } else{Toast.makeText(getApplicationContext(),"수정되지 않았음.",Toast.LENGTH_SHORT).show();}
        }else{
                if(mydb.insertAssignment(a_title.getText().toString(),a_date.getText().toString(),subject.getText().toString(),
                        a_prior.getText().toString(),contents.getText().toString())){
                    Toast.makeText(getApplicationContext(),"추가 되었음.",Toast.LENGTH_SHORT).show();}
            else{Toast.makeText(getApplicationContext(),"추가되지 않았음.",Toast.LENGTH_SHORT).show();}
            finish();
                }
            }
    }

<< DBHelper의 insert소스>>

 public void onCreate(SQLiteDatabase db){
        db.execSQL("create table assignment (id integer primary key, a_title text, a_date text, subject text, a_prior text, contents text);");//날짜형식 반환타입?....
    }
    public void onUpgrade(SQLiteDatabase db,int OldVersion, int newVersion){
    db.execSQL("DROP TABLE IF EXISTS assignment");//기존에 있는거 날리고 새로운 db만듬
    onCreate(db);   }
public boolean insertAssignment(String a_title,String a_date,String subject,String a_prior,String contents){
    //title은 표시할 이름, subject는 과목 명 ,a_date 제출 날짜,prior은 우선순위 contents는 내용, type는 제출방법(온라인, 오프라인)
    SQLiteDatabase db = this.getWritableDatabase();
    ContentValues contentValues=new ContentValues();
    contentValues.put("a_title",a_title);    contentValues.put("a_date",a_date);
    contentValues.put("subject",subject);
   // contentValues.put("type",type);
    contentValues.put("a_prior",a_prior); contentValues.put("contents",contents);
  //  db.execSQL("insert into assignment values(null,'"+a_title+"','"+a_date+"','"+subject+"','"+a_prior+"','"+contents+"');");
    //db.close();
  //  System.out.println("insert into assignment values(null,'"+a_title+"','"+a_date+"','"+subject+"','"+a_prior+"','"+contents+"');");
    db.insert("assignment",null,contentValues);
    return true;
}

<<에러메시지>>

 

 

해결부탁드려요 ㅠㅠ 이거때문에 4시간동안아무것도 못하고있어요 ㅠㅠ

나나에요 (120 포인트) 님이 2016년 12월 3일 질문
에러를 이미지로 올리시면 축소되어 첨부됩니다. 글자가 너무 작아서 다른 사람이 무슨 에러인지 알 수가 없어요
아 그렇구나..처음올려봐서 몰랐네요 ㅠㅠ
E/SQLiteLog: (1) table assignment has no column named a_title
E/SQLiteDatabase: Error inserting subject=ㅇ a_title=ㅁ contents=ㄱ a_prior=9 a_date=7
                  android.database.sqlite.SQLiteException: table assignment has no column named a_title (code 1): , while compiling: INSERT INTO assignment(subject,a_title,contents,a_prior,a_date) VALUES (?,?,?,?,?)
                      at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
                      at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:1093)
                      at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:670)
                      at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588)
                      at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:59)
                      at android.database.sqlite.SQLiteStatement.<init>(SQLiteStatement.java:31)
                      at android.database.sqlite.SQLiteDatabase.insertWithOnConflict(SQLiteDatabase.java:1593)
                      at android.database.sqlite.SQLiteDatabase.insert(SQLiteDatabase.java:1465)
                      at com.example.yejin.board.DBHelper.insertAssignment(DBHelper.java:44)
                      at com.example.yejin.board.DisplayAssignment.insert(DisplayAssignment.java:91)
                      at java.lang.reflect.Method.invoke(Native Method)
                      at java.lang.reflect.Method.invoke(Method.java:372)
                      at android.view.View$1.onClick(View.java:4245)
                      at android.view.View.performClick(View.java:5194)
                      at android.view.View$PerformClick.run(View.java:20903)
                      at android.os.Handler.handleCallback(Handler.java:739)
                      at android.os.Handler.dispatchMessage(Handler.java:95)
                      at android.os.Looper.loop(Looper.java:145)
                      at android.app.ActivityThread.main(ActivityThread.java:5942)
                      at java.lang.reflect.Method.invoke(Native Method)
                      at java.lang.reflect.Method.invoke(Method.java:372)
                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1399)
                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1194)

1개의 답변

0 추천

 table assignment has no column named a_title

라고 에러가 나와있네요

테이블 정의하는 코드를 끝까지 볼 수 없어서 확실하지 않지만, 아래 부분에  a_title 컬럼을 잘 정해줬는지 봐야할 것 같습니다

db.execSQL("create table assignment (id integer primary key,
cc1232 (35,280 포인트) 님이 2016년 12월 3일 답변
db.execSQL("create table assignment (id integer primary key, a_title text, a_date text, subject text, a_prior text, contents text);");//

크리에이트 부분은 이렇게 되어있구요 자꾸 컬럼을 못찾아서 이름을 바꿔보고했는데도 에러가 안없어집니다 ㅠㅠㅠ
...