创建android db表

时间:2012-06-08 22:57:49

标签: android mysql database sqlite debugging

我是android的新手。我试图使用以下代码在数据库中创建一个表,但有一些错误

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 个答案:

答案 0 :(得分:1)

AUTO_INCREMENT更改为AUTOINCREMENT

编辑:

试试这个,

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

答案 1 :(得分:0)

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

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

您还可以查看这篇文章:

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

如果您使用SQLite

,语法非常接近

答案 2 :(得分: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为我工作

答案 3 :(得分:0)

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