Android 打开数据库时应用程序崩溃

Android 打开数据库时应用程序崩溃,android,database,sqlite,Android,Database,Sqlite,当我试图打开数据库时,应用程序崩溃了。我在下面发布代码,但我已经以同样的方式在同一个应用程序中实现了另一个数据库,我对此没有任何问题 public class projectdatabase { public static final String KEY_ROWID = "_id"; public static final String PROJECT_NAME = "project_name"; public static final String PROJECT_ID = "projec

当我试图打开数据库时,应用程序崩溃了。我在下面发布代码,但我已经以同样的方式在同一个应用程序中实现了另一个数据库,我对此没有任何问题

public class projectdatabase {

public static final String KEY_ROWID = "_id";
public static final String PROJECT_NAME = "project_name";
public static final String PROJECT_ID = "project_id";
public static final String PROJECT_DIFFICULTY = "project_difficulty";
public static final String PROJECT_STATUS = "project_status";
public static final String PROJECT_START_DATE = "project_start_date";
public static final String PROJECT_FINISH_DATE = "project_finsish_date";

private static final String DATABASE_NAME = "project_db";
private static final String DATABASE_TABLE = "project_details";
private static final int DATABASE_VERSION = 1;

private DbHelper ourHelper;
private final Context projectdbContext;
private SQLiteDatabase projectDatabase;

private static class DbHelper extends SQLiteOpenHelper {
    public DbHelper(Context context) {

        super(context, DATABASE_NAME, null, DATABASE_VERSION);

    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        // TODO Auto-generated method stub

        db.execSQL("CREATE TABLE "+ DATABASE_TABLE + " (" +
                KEY_ROWID + " INTEGER AUTOINCREMENT," +
                PROJECT_NAME + " TEXT NOT NULL," +
                PROJECT_ID + " INTEGER PRIMARY KEY," +
                PROJECT_START_DATE + " TEXT," +
                PROJECT_FINISH_DATE + " TEXT," +
                PROJECT_DIFFICULTY + " TEXT, " +
                PROJECT_STATUS + " TEXT);"
               ); 

    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        // TODO Auto-generated method stub

        db.execSQL("DROP TABLE IF EXIST " + DATABASE_NAME);
        onCreate(db);

    }
}

public projectdatabase (Context c) {                            
     projectdbContext = c;
}

public projectdatabase open() {                                                 //Open database
    ourHelper = new DbHelper(projectdbContext);
    projectDatabase = ourHelper.getWritableDatabase();
    return this;
}
以下是日志: (我用粗体字写了这一部分,我认为这突出了主要问题)

12-27 01:22:21.893:E/AndroidRuntime(2214):致命异常:主
12-27 01:22:21.893:E/AndroidRuntime(2214):java.lang.IllegalStateException:无法执行活动的方法
12-27 01:22:21.893:E/AndroidRuntime(2214):在android.view.view$1.onClick(view.java:3044)
12-27 01:22:21.893:E/AndroidRuntime(2214):在android.view.view.performClick(view.java:3511)
12-27 01:22:21.893:E/AndroidRuntime(2214):在android.view.view$PerformClick.run(view.java:14105)
12-27 01:22:21.893:E/AndroidRuntime(2214):位于android.os.Handler.handleCallback(Handler.java:605)
12-27 01:22:21.893:E/AndroidRuntime(2214):位于android.os.Handler.dispatchMessage(Handler.java:92)
12-27 01:22:21.893:E/AndroidRuntime(2214):在android.os.Looper.loop(Looper.java:137)
12-27 01:22:21.893:E/AndroidRuntime(2214):位于android.app.ActivityThread.main(ActivityThread.java:4424)
12-27 01:22:21.893:E/AndroidRuntime(2214):位于java.lang.reflect.Method.Invokenactive(本机方法)
12-27 01:22:21.893:E/AndroidRuntime(2214):在java.lang.reflect.Method.invoke(Method.java:511)
12-27 01:22:21.893:E/AndroidRuntime(2214):在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
12-27 01:22:21.893:E/AndroidRuntime(2214):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
12-27 01:22:21.893:E/AndroidRuntime(2214):在dalvik.system.NativeStart.main(本机方法)
12-27 01:22:21.893:E/AndroidRuntime(2214):由以下原因引起:java.lang.reflect.InvocationTargetException
12-27 01:22:21.893:E/AndroidRuntime(2214):位于java.lang.reflect.Method.Invokenactive(本机方法)
12-27 01:22:21.893:E/AndroidRuntime(2214):在java.lang.reflect.Method.invoke(Method.java:511)
12-27 01:22:21.893:E/AndroidRuntime(2214):在android.view.view$1.onClick(view.java:3039)
12-27 01:22:21.893:E/AndroidRuntime(2214):。。。还有11个
**12-27 01:22:21.893:E/AndroidRuntime(2214):由以下原因引起:android.database.sqlite.SQLiteException:靠近“自动增量”:语法错误:,编译时:CREATE TABLE project_details(_idinteger AUTOINCREMENT、项目名称文本不为NULL、项目id INTEGER主键、项目开始日期文本、项目结束日期文本、项目难度文本、项目状态文本)**
12-27 01:22:21.893:E/AndroidRuntime(2214):在android.database.sqlite.SQLiteCompiledSql.native_编译(本机方法)
12-27 01:22:21.893:E/AndroidRuntime(2214):位于android.database.sqlite.SQLiteCompiledSql。(SQLiteCompiledSql.java:68)
12-27 01:22:21.893:E/AndroidRuntime(2214):位于android.database.sqlite.SQLiteProgram.compileSql(SQLiteProgram.java:134)
12-27 01:22:21.893:E/AndroidRuntime(2214):在android.database.sqlite.SQLiteProgram.compileAndbindAllArgs(SQLiteProgram.java:361)
12-27 01:22:21.893:E/AndroidRuntime(2214):位于android.database.sqlite.SQLiteStatement.acquireAndLock(SQLiteStatement.java:260)
12-27 01:22:21.893:E/AndroidRuntime(2214):位于android.database.sqlite.SQLiteStatement.executeUpdateDelete(SQLiteStatement.java:84)
12-27 01:22:21.893:E/AndroidRuntime(2214):在android.database.sqlite.SQLiteDatabase.executeSql(SQLiteDatabase.java:1899)
12-27 01:22:21.893:E/AndroidRuntime(2214):位于android.database.sqlite.SQLiteDatabase.execSQL(SQLiteDatabase.java:1839)
12-27 01:22:21.893:E/AndroidRuntime(2214):在com.kk.project.projectdatabase$DbHelper.onCreate(projectdatabase.java:38)
12-27 01:22:21.893:E/AndroidRuntime(2214):位于android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:165)
12-27 01:22:21.893:E/AndroidRuntime(2214):位于com.kk.project.projectdatabase.open(projectdatabase.java:66)
12-27 01:22:21.893:E/AndroidRuntime(2214):在com.kk.project.Addproject.submit_project(Addproject.java:112)
12-27 01:22:21.893:E/AndroidRuntime(2214):…还有14个

您不能在非
主键的列上使用
自动增量


但是,您可以使用嵌套的SELECT语句或创建自己的触发器来执行相同的操作。请阅读:

您不能在非
主键的列上使用
自动增量

但是,您可以使用嵌套的SELECT语句或创建自己的触发器来执行相同的操作。请阅读:

12-27 01:22:21.893: E/AndroidRuntime(2214): FATAL EXCEPTION: main
12-27 01:22:21.893: E/AndroidRuntime(2214): java.lang.IllegalStateException: Could not execute method of the activity
12-27 01:22:21.893: E/AndroidRuntime(2214):     at android.view.View$1.onClick(View.java:3044)
12-27 01:22:21.893: E/AndroidRuntime(2214):     at android.view.View.performClick(View.java:3511)
12-27 01:22:21.893: E/AndroidRuntime(2214):     at android.view.View$PerformClick.run(View.java:14105)
12-27 01:22:21.893: E/AndroidRuntime(2214):     at android.os.Handler.handleCallback(Handler.java:605)
12-27 01:22:21.893: E/AndroidRuntime(2214):     at android.os.Handler.dispatchMessage(Handler.java:92)
12-27 01:22:21.893: E/AndroidRuntime(2214):     at android.os.Looper.loop(Looper.java:137)
12-27 01:22:21.893: E/AndroidRuntime(2214):     at android.app.ActivityThread.main(ActivityThread.java:4424)
12-27 01:22:21.893: E/AndroidRuntime(2214):     at java.lang.reflect.Method.invokeNative(Native Method)
12-27 01:22:21.893: E/AndroidRuntime(2214):     at java.lang.reflect.Method.invoke(Method.java:511)
12-27 01:22:21.893: E/AndroidRuntime(2214):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
12-27 01:22:21.893: E/AndroidRuntime(2214):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
12-27 01:22:21.893: E/AndroidRuntime(2214):     at dalvik.system.NativeStart.main(Native Method)
12-27 01:22:21.893: E/AndroidRuntime(2214): Caused by: java.lang.reflect.InvocationTargetException
12-27 01:22:21.893: E/AndroidRuntime(2214):     at java.lang.reflect.Method.invokeNative(Native Method)
12-27 01:22:21.893: E/AndroidRuntime(2214):     at java.lang.reflect.Method.invoke(Method.java:511)
12-27 01:22:21.893: E/AndroidRuntime(2214):     at android.view.View$1.onClick(View.java:3039)
12-27 01:22:21.893: E/AndroidRuntime(2214):     ... 11 more
**12-27 01:22:21.893: E/AndroidRuntime(2214): Caused by: android.database.sqlite.SQLiteException: near "AUTOINCREMENT": syntax error: , while compiling: CREATE TABLE project_details (_id INTEGER AUTOINCREMENT,project_name TEXT NOT NULL,project_id INTEGER PRIMARY KEY,project_start_date TEXT,project_finsish_date TEXT,project_difficulty TEXT, project_status TEXT);**
12-27 01:22:21.893: E/AndroidRuntime(2214):     at android.database.sqlite.SQLiteCompiledSql.native_compile(Native Method)
12-27 01:22:21.893: E/AndroidRuntime(2214):     at android.database.sqlite.SQLiteCompiledSql.<init>(SQLiteCompiledSql.java:68)
12-27 01:22:21.893: E/AndroidRuntime(2214):     at android.database.sqlite.SQLiteProgram.compileSql(SQLiteProgram.java:134)
12-27 01:22:21.893: E/AndroidRuntime(2214):     at android.database.sqlite.SQLiteProgram.compileAndbindAllArgs(SQLiteProgram.java:361)
12-27 01:22:21.893: E/AndroidRuntime(2214):     at android.database.sqlite.SQLiteStatement.acquireAndLock(SQLiteStatement.java:260)
12-27 01:22:21.893: E/AndroidRuntime(2214):     at android.database.sqlite.SQLiteStatement.executeUpdateDelete(SQLiteStatement.java:84)
12-27 01:22:21.893: E/AndroidRuntime(2214):     at android.database.sqlite.SQLiteDatabase.executeSql(SQLiteDatabase.java:1899)
12-27 01:22:21.893: E/AndroidRuntime(2214):     at android.database.sqlite.SQLiteDatabase.execSQL(SQLiteDatabase.java:1839)
12-27 01:22:21.893: E/AndroidRuntime(2214):     at com.kk.project.projectdatabase$DbHelper.onCreate(projectdatabase.java:38)
12-27 01:22:21.893: E/AndroidRuntime(2214):     at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:165)
12-27 01:22:21.893: E/AndroidRuntime(2214):     at com.kk.project.projectdatabase.open(projectdatabase.java:66)
12-27 01:22:21.893: E/AndroidRuntime(2214):     at com.kk.project.Addproject.submit_project(Addproject.java:112)
12-27 01:22:21.893: E/AndroidRuntime(2214):     ... 14 more