1
public class MyAct extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        SQLiteDatabase db = openOrCreateDatabase("MyDb",MODE_PRIVATE,null);
        db.execSQL("CREATE TABLE IF NOT EXISTS MyTab (Month INT(2),Date INT(2),Year INT(4),Event VARCHAR;");
        db.execSQL("INSERT INTO MyTab VALUES (0,1,2012,'mini_proj');");
        db.close();

    }
}

テーブルを作成するためにこの小さなスニペットを書きましたが、うまくいきません。このコードの問題は何ですか?

4

1 に答える 1

2

最初のクエリでは、閉じ中括弧がありません。

CREATE TABLE IF NOT EXISTS MyTab (
    Month INT(2),
    Date INT(2),
    Year INT(4),
    Event VARCHAR;

そのはず:

CREATE TABLE IF NOT EXISTS MyTab (
    Month INT(2),
    Date INT(2),
    Year INT(4),
    Event VARCHAR
)

;また、ドキュメントに記載されているように、クエリがで終わる必要はないことに注意してください。

パラメータ
sql実行するSQLステートメント。セミコロンで区切られた複数のステートメントはサポートされていません。

また、LogCatの出力を常に確認する必要があります。これにより、がスローされるためSQLiteExceptionです。


さらにいくつかのSQLiteノート:

  1. VARCHARSQLiteには-typeがありません。テキストのようなタイプを持っているだけでTEXT、変換します。
  2. データ型の長さの指定もSQLiteでは無視されることに注意してください。

SQLiteは、文字列、BLOB、または数値の長さに(大きなグローバル制限を除いて)長さの制限を課しません。SQLITE_MAX_LENGTH

于 2012-12-15T15:35:42.253 に答える