1

私はアンドロイドが初めてです。次のコードを使用してデータベースにテーブルを作成しようとしていますが、いくつかのエラーがあります

db.beginTransaction();
    try {

        db.execSQL("CREATE TABLE IF NOT EXISTS `book` (`id` int(11) NOT NULL AUTO_INCREMENT,`title` varchar(100) NOT NULL,`author_name` varchar(100) NOT NULL,`text_b` text NOT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;");
        db.setTransactionSuccessful();
    } catch (SQLiteException e) {
        Log.d("Maaz", "Exception 2 : SQL Exception 2 " + e.getMessage());
    } finally {
        db.endTransaction();
    }

上記のコードは私に次のエラーを与えています

Failure 1 (near "AUTO_INCREMENT": syntax error)
on 0x23c510 when preparing 'CREATE TABLE IF NOT EXISTS `book` (`id` int(11) NOT NULL AUTO_INCREMENT,`title` varchar(100) NOT NULL,`author_name` varchar(100) NOT NULL,`text_b` text NOT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;'.

親切に私を助けてください。前もって感謝します。

4

4 に答える 4

1

に変更AUTO_INCREMENTAUTOINCREMENTます。

編集:

これを試して、

CREATE TABLE IF NOT EXISTS book (
    _id INTEGER PRIMARY KEY AUTOINCREMENT, 
    title varchar(100) NOT NULL, 
    author_name varchar(100) NOT NULL, 
    text_b TEXT NOT NULL
);
于 2012-06-08T23:05:36.540 に答える
0

これは私の場合、ついに機能しました。

答え :

CREATE TABLE IF NOT EXISTS book (
   _id Integer PRIMARY KEY AUTOINCREMENT,
   title varchar(100) NOT NULL,
   author_name varchar(100) NOT NULL,
   text_b TEXT NOT NULL); 

エンジンを削除すると、DEFAULT CHARSETが機能しました

于 2012-06-08T23:23:54.957 に答える
0

識別子(つまり)を引用符で囲んでいるようですbooks。それらを削除します。

于 2012-06-09T03:41:53.033 に答える
0

データベースの種類によって、SQL 構文に違いが生じます。最初にコンソール エディターでデータベース テーブルを作成してから、その構文をコードに貼り付ける必要があります。また、一般的な execSQL を使用してコードからテーブルを作成することも、通常はお勧めできません。これには、ORM またはデータベース ライブラリまたはフレームワークを使用する必要があります。クライアントの Android デバイスで作成しない限り、継続的インテグレーション サーバーでもこのテーブルを作成できます。Hibernate は、煩雑な SQL をコードから除外するのに適しています。

データベースの種類を教えてください。

この記事もご覧ください。

http://androidforbeginners.blogspot.com/2010/01/creating-multiple-sqlite-database.html

SQLite を使用している場合、非常に近い構文

于 2012-06-08T23:01:31.520 に答える