2012-10-31 4 views
-5

이 가능한 중복 :
Android:How to write to SQL database데이터베이스하지만 응답에 쓰기를 시도

나는 형태로하고 버튼을 눌러 데이터를 입력 한 문자열은 데이터베이스에 전송해야 글쓰기가 성공했다면 열 수있는 대화 상자가 있지만 응답이 없습니다.

편집 : "AUTOINCREMENT는 INTEGER PRIMARY KEY에서만 허용됩니다"라는 오류를 확인했습니다. 그러나 기본 키는 정수입니까?

public class AddCourse extends Activity implements OnClickListener { 

Button sqlAddModule; 
EditText sqlModuleCode, sqlModuleName, sqlModuleStart, sqlModuleEnd, sqlModuleLocation, sqlModuleComments; 
@Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.add_course); 

     sqlAddModule= (Button)findViewById(R.id.addToDatabase); 
     sqlModuleCode = (EditText)findViewById(R.id.labelEditModuleCode); 
     sqlModuleName = (EditText)findViewById(R.id.labelEditModuleFull); 
     sqlModuleLocation = (EditText)findViewById(R.id.labelEditModuleLocation); 
     sqlModuleComments = (EditText)findViewById(R.id.labelEditModuleComments); 

     sqlAddModule.setOnClickListener(this); 
} 

     public void onClick (View addModuleButton) 
     { 
      boolean didItWork = true; 
      try{ 
      String moduleCode = sqlModuleCode.getText().toString(); 
      String moduleName = sqlModuleName.getText().toString(); 
      String moduleLocation = sqlModuleLocation.getText().toString(); 
      String moduleComments = sqlModuleComments.getText().toString(); 

      database entry = new database(AddCourse.this); 
      entry.open(); 
      entry.createEntry(moduleCode, moduleName,moduleLocation, moduleComments); 
      entry.close(); 

      }catch(Exception e){ 
       didItWork = false; 
      }finally{ if(didItWork){ 
       Dialog d = new Dialog(this) ; 
       d.setTitle("BooYa!"); 
       TextView tv = new TextView(this); 
       tv.setText("Success"); 
       d.setContentView(tv); 
       d.show(); 
      } 


      } 

      finish(); 

     }  

} 

public class database { 

    public static final String KEY_ROWID = "_id"; 
    public static final String KEY_MODULECODE = "module_code"; 
    public static final String KEY_MODULENAME = "module_name"; 
    public static final String KEY_MODULETYPE = "module_type"; 
    public static final String KEY_MODULEDAY = "module_day"; 
    public static final String KEY_MODULESTART = "module_start"; 
    public static final String KEY_MODULEEND = "module_end"; 
    public static final String KEY_MODULELOCATION = "module_location"; 
    public static final String KEY_MODULECOMMENTS = "module_comments"; 

    private static final String DATABASE_NAME = "module_database"; 
    private static final String DATABASE_TABLE = "my_modules"; 
    private static final int DATABASE_VERSION = 1; 

    private DbHelper myHelper; 
    private final Context myContext; 
    private SQLiteDatabase moduleDatabase; 

    private static class DbHelper extends SQLiteOpenHelper { 

     public DbHelper(Context context){ 
      super(context, DATABASE_NAME, null, DATABASE_VERSION); 

     } 

     @Override 
     public void onCreate(SQLiteDatabase db) { 
      db.execSQL("CREATE TABLE " + DATABASE_TABLE + " (" + 
         KEY_ROWID + " INTERGER PRIMARY KEY AUTOINCREMENT, " + 
         KEY_MODULECODE + " TEXT NOT NULL, " + 
         KEY_MODULENAME + " TEXT NOT NULL, " + 
         KEY_MODULELOCATION + " TEXT NOT NULL, " + 
         KEY_MODULECOMMENTS + " TEXT NOT NULL,);" 
        ); 

     } 

     @Override 
     public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
      // TODO Auto-generated method stub 
      db.execSQL("DROP TABEL IF EXISTS " + DATABASE_TABLE); 
      onCreate(db); 

     } 


    } 

    public database(Context c){ 
     myContext = c; 
    } 

    public database open()throws SQLException{ 
     myHelper = new DbHelper(myContext); 
     moduleDatabase = myHelper.getWritableDatabase(); 
     return this; 
    } 

    public void close(){ 
    myHelper.close(); 
    } 

    public long createEntry(String moduleCode, String moduleName, String moduleLocation, String moduleComments) { 
     ContentValues cv = new ContentValues(); 
     cv.put(KEY_MODULECODE,moduleCode); 
     cv.put(KEY_MODULENAME,moduleName); 
     cv.put(KEY_MODULELOCATION,moduleLocation); 
     cv.put(KEY_MODULECOMMENTS,moduleComments); 
     return moduleDatabase.insert(DATABASE_TABLE,null,cv); 
     // TODO Auto-generated method stub 

    } 

} 
+1

의에서 추가 쉼표 이것은 당신의 [이전 질문]과 같은 질문 (이다 있었다 http://stackoverflow.com/q/13168638/1267661), 오류없이 ... – Sam

+0

나는 오류를 해결 한 setOnClickListner를 제거했지만 logCat은 메모리를 해제하는 가비지 컬렉터를 제외한 모든 오류를 표시하지 않는다는 것을 알게되었습니다. – Calgar99

+0

나는 그것을 제거하고 다시 추가했지만 아무런 차이가 없었다. 내 실수는 내 onClick 메서드 또는 데이터베이스 class.but 찾을 수 없습니다. – Calgar99

답변

1

데이터베이스 클래스의 오타있다 SQL 클래스 : " INTERGER PRIMARY KEY AUTOINCREMENT, " 당신은 아마 이미 알고, "INTEGER"의 정확한 철자 없습니다. 또한, db.execSQL("DROP TABEL IF EXISTS " + DATABASE_TABLE);

+0

감사합니다. 실제로 맞춤법 오류가 발생하지 않았습니다. 빠른 질문은 당신이 언급 한 방법을 공란으로 남겨 두거나 데이터가 남아 있도록 DROP TABEL IF EXISTS "+ DATABASE_TABLE"대신에 다른 명령문이 필요합니까? – Calgar99

+0

그것은 TABEL이 아니라'TABLE'입니다. – 323go

0

주목을 내 코드의 문제점은 CreateTable에서

public void onCreate(SQLiteDatabase db) { 
      db.execSQL("CREATE TABLE " + DATABASE_TABLE + " (" + 
         KEY_ROWID + " INTERGER PRIMARY KEY AUTOINCREMENT, " + 
         KEY_MODULECODE + " TEXT NOT NULL, " + 
         KEY_MODULENAME + " TEXT NOT NULL, " + 
         KEY_MODULELOCATION + " TEXT NOT NULL, " + 
         KEY_MODULECOMMENTS + " TEXT NOT NULL);" 
        ); 
관련 문제