Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 试图写入数据库但没有响应_Android_Sqlite - Fatal编程技术网

Android 试图写入数据库但没有响应

Android 试图写入数据库但没有响应,android,sqlite,Android,Sqlite,可能重复: 我将数据输入表单,按下按钮,字符串将被发送到数据库,如果写入成功,我将打开一个对话框。但是,我没有收到任何响应 编辑:我将错误标识为“仅允许在整数主键上自动递增” 但是,我的主键是一个整数 public class AddCourse extends Activity implements OnClickListener { Button sqlAddModule; EditText sqlModuleCode, sqlModuleName, sqlModuleStart, sq

可能重复:

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

编辑:我将错误标识为“仅允许在整数主键上自动递增” 但是,我的主键是一个整数

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

    }

}

数据库类中有一个输入错误:
“集成主键自动增量,”

正如您可能已经知道的那样,这不是“整数”的正确拼写。另外,请注意
db.execSQL(“如果存在,请删除TABEL”+数据库表)

我的代码的问题是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);"
                    );

这与您的问题相同,但没有错误…我注意到我遗漏了解决错误的setOnClickListner,但现在logCat没有显示任何错误,除了垃圾收集器释放内存。我删除了它并将其添加回,但没有任何区别。我的错误在onClick方法或数据库类中。但是找不到它。呃…典型的错误是在我的创建表的末尾多了一个逗号。谢谢,我实际上没有发现拼写错误。快速问题将您提到的方法留空可以吗?或者如果存在“+数据库”表以确保数据保留,是否需要替代DROP TABEL的替代语句?它是
,而不是TABEL。