2012-10-31 68 views
-5

可能重複:
Android:How to write to SQL database嘗試寫入數據庫,但沒有任何反應

我將數據輸入表單和按鈕的按下字符串應該被髮送到數據庫如果寫入成功,我有一個對話框打開,但我沒有收到任何迴應。

編輯:我確定錯誤爲「AUTOINCREMENT只允許在整數主鍵」 但是,我的主鍵是一個整數?

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(); 

     }  

} 

SQL類

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方法或數據庫類中,但無法找到它。 – Calgar99

回答

1

有沒有在你的數據庫類一個錯字: " INTERGER PRIMARY KEY AUTOINCREMENT, " 不是「整數」的正確拼寫,因爲你可能已經知道。此外,採取db.execSQL("DROP TABEL IF EXISTS " + DATABASE_TABLE);

+0

謝謝我實際上沒有解決拼寫錯誤。快速的問題是可以離開你提到的方法空白,或者是否需要備用語句而不是DROP TABEL如果存在「+ DATABASE_TABLE以確保數據仍然存在? – Calgar99

+0

它是'TABLE',而不是TABEL。 – 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);" 
        ); 
相關問題