-5

可能重复:
Android:如何写入 SQL 数据库

我在表单中输入数据,按下按钮后,字符串应该被发送到数据库,如果写入成功,我会打开一个对话框,但是我没有得到任何响应。

编辑:我将错误识别为“仅在整数主键上允许使用自动增量”但是我的主键是整数?

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 回答