2012-12-26 44 views
0

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

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; 
} 

这里是logcat的: (我已经提出,部分大胆的,我认为亮点主要问题)

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 

回答