2012-11-21 7 views
3

나는 안드로이드에서 데이터베이스를 만들려고하고 내가 실행할 때 예외가 발생합니다 : 이런 일이 왜 이해가 안안드로이드 데이터베이스 예외

Database - Failure 1 (near "integer" : syntax error) on 0x1ac028 when preparing 'create table list1 (id integer Primary key autoincrement, task text not null, check integer not null)' 

. 이것은 내 코드입니다 :

String dbName="projectDatabase"; 
    String tableName="List1"; 
    String TableStructure="create table " + tableName +" (id integer Primary key autoincrement, task text not null, check integer not null)"; 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     Button cb = (Button) findViewById(R.id.creatbutton); 
     cb.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View arg0) { 
       // TODO Auto-generated method stub 
       try{ 
        SQLiteDatabase ldb = openOrCreateDatabase(dbName, Context.MODE_PRIVATE, null); 
        ldb.execSQL(TableStructure);}catch(Exception e){ 
         Toast.makeText(DsTest2Activity.this, "Failed", Toast.LENGTH_LONG).show(); 
        } 
       Intent list = new Intent(DsTest2Activity.this,List.class); 
       startActivity(list); 
      } 
     }); 
    } 
+0

내가 그 체크 ID 생각하지 않는다 create 문에서 null입니다. 한번 확인해보십시오 –

답변

3

check은 SQLite 키워드입니다. 테이블이나 열 이름으로 사용할 수 없습니다.

열 이름을 다른 것으로 변경하면 오류가 사라집니다.

String TableStructure="create table " + tableName +" (id integer Primary key autoincrement, task text not null, checknum integer not null)"; 

현재 SQLite 키워드의 전체 목록은 here을 참조하십시오.

+0

ref : http://www.sqlite.org/lang_keywords.html – njzk2

+0

감사합니다. –

-1

안녕하세요, exemple를 들어, 코드 _id integer primary key autoincrement, ...에 넣어 :

CREATE TABLE tabela(_id integer primary key autoincrement, task text not null, check integer not null);

+0

'check'는 SQLite 키워드입니다 ... 테이블이나 컬럼 이름으로 사용할 수 없습니다. – Barak

+0

죄송합니다, 내 게시글을 보지 못했습니다 .. – Rodolfo

1

은 열 이름으로 직접 키워드를 사용하려면, 인용이 :

..., "check" integer not null) 
+0

+1 사실이지만 OP를 사용중인 방법에서 사용하려면 따옴표를 이스케이프 처리해야합니다. IMO 열 이름을 변경하는 것이 더 간단합니다. :피 – Barak