-5

重複の可能性:
Android:SQLデータベースへの書き込み方法

フォームにデータを入力し、ボタンを押すと文字列がデータベースに送信され、書き込みが成功した場合に開くダイアログボックスが表示されますが、応答がありません。

編集:エラーを「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();

        }    

}

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

    }

}
4

2 に答える 2

1

データベースクラスにタイプミスがあります " INTERGER PRIMARY KEY AUTOINCREMENT, " 。おそらくすでにご存知のように、これは「INTEGER」の正しいスペルではありません。また、注意してくださいdb.execSQL("DROP TABEL IF EXISTS " + DATABASE_TABLE);

于 2012-11-01T00:46:34.027 に答える
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);"
                    );
于 2012-11-01T00:50:27.923 に答える