1

正しく動作しているアプリで ADT からクリーンアップを行ったところ、クラッシュしました。これが私が知っていることです...

主なアプリはこちら...

public class MainActivity extends Activity {
private GolferDBManager mydManager;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    // Go get the Known Golfers
    mydManager = new GolferDBManager(this);
    mydManager.openReadable();
    mydManager.retrieveGolfers();
    mydManager.close();

}

これが GolferDBManager クラスです。

public class GolferDBManager {
public static final String DB_NAME = "golfgames";
public static final String DB_TABLE = "golfers";
public static final int DB_VERSION = 1;
private static final String CREATE_TABLE = "CREATE TABLE " + DB_TABLE + " (index INTEGER PRIMARY KEY, golfer_name TEXT, golfer_init TEXT, usga_index DOUBLE);";
private SQLHelper helper;
private SQLiteDatabase db;
private Context context;


public GolferDBManager(Context c){
    this.context = c;
    helper=new SQLHelper(c);
    this.db = helper.getWritableDatabase();
}
public class SQLHelper extends SQLiteOpenHelper {
    public SQLHelper(Context c){
        super(c, DB_NAME, null, DB_VERSION);
    }

それは

    this.db = helper.getWritableDatabase();

の行

        mydManager = new GolferDBManager(this);

メインアプリに2行。

クリーニングはデータベースを台無しにしましたか?

これがデバッグスタックです

Thread [<1> main] (Suspended (exception RuntimeException))  
<VM does not provide monitor information>   
ActivityThread.performLaunchActivity(ActivityThread$ActivityClientRecord, Intent) line: 2211    
ActivityThread.handleLaunchActivity(ActivityThread$ActivityClientRecord, Intent) line: 2261 
ActivityThread.access$600(ActivityThread, ActivityThread$ActivityClientRecord, Intent) line: 141    
ActivityThread$H.handleMessage(Message) line: 1256  
ActivityThread$H(Handler).dispatchMessage(Message) line: 99 
Looper.loop() line: 137 
ActivityThread.main(String[]) line: 5103    
Method.invokeNative(Object, Object[], Class, Class[], Class, int, boolean) line: not available [native method]  
Method.invoke(Object, Object...) line: 525  
ZygoteInit$MethodAndArgsCaller.run() line: 737  
ZygoteInit.main(String[]) line: 553 
NativeStart.main(String[]) line: not available [native method]  

Logcat は次のように述べています。

11-09 16:19:54.386: E/SQLiteLog(1184): (1) near "index": syntax error

ありがとう。

4

1 に答える 1

0

でデータベースのフィールドを定義するときに、フィールド名としてインデックスを使用していました

CREATE_TABLE= ...

. なぜそれがしばらくの間機能していたのかわかりません-決して機能するべきではありません. しかし、それを別の名前に変更すると問題が解決しました。

ご覧いただきありがとうございます。

ddk

于 2013-11-09T21:28:09.307 に答える