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

什么样的数据库,它对 SQL 语法有影响。您应该首先尝试在控制台编辑器中创建数据库表,然后您可以将该语法粘贴到您的代码中。使用通用 execSQL 从代码创建表通常也不是一个好主意。您应该为此使用 ORM 或数据库库或框架。除非您在客户端的 android 设备上创建它,否则持续集成服务器也可以创建此表。Hibernate 非常适合将凌乱的 SQL 排除在代码之外。

你能告诉我们什么样的数据库吗?

你也可以看看这篇文章:

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

如果您使用 SQLite,语法非常接近

于 2012-06-08T23:01:31.520 回答
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); 

删除引擎,默认字符集为我工作

于 2012-06-08T23:23:54.957 回答
0

似乎您在标识符(即books)周围有引号。删除它们。

于 2012-06-09T03:41:53.033 回答