创建android数据库表

创建android数据库表,android,mysql,database,sqlite,debugging,Android,Mysql,Database,Sqlite,Debugging,我是android新手。我试图使用以下代码在db中创建一个表,但出现了一些错误 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

我是android新手。我试图使用以下代码在db中创建一个表,但出现了一些错误

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 ;'.

请帮帮我。提前感谢。

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

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

您还可以查看本文:


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

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

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

您还可以查看本文:


如果使用SQLite,则语法非常接近,请将
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
);

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

对我来说,这终于奏效了

答复:
删除引擎,默认字符集对我有效

在我的情况下,这终于有效了

答复:
删除引擎时,默认字符集对我有效

似乎标识符周围有引号(即
书籍
)。删除它们。

似乎标识符周围有引号(即
书籍
)。删除它们。

我使用wampServer创建了DB,然后导出
sql
文件,并尝试将代码复制到此处,但不起作用。我使用wampServer创建了DB,然后导出
sql
文件,并尝试将代码复制到此处,但不起作用。不,不起作用。我也试过了,但没用`db.execSQL(“如果不存在创建表
book
id
int(11)非空自动增量,
title
varchar(100)非空,
author\u name
varchar(100)非空,
text\b
text非空,主键(
id
)引擎=InnoDB默认字符集=latin1自动增量=1;”);”“你也有同样的语法错误吗<代码>故障1(接近“自动增量”:语法错误)?与以下内容相同。。。您会收到相同的错误消息,但是使用了
AUTOINCRMENT
对吗?我删除了
引擎的属性和我在回答中提到的其他内容。这对我很有效。非常感谢您的回复。这将是我的下一个猜测哈哈。很高兴你明白了。您应该接受答案以结束问题。:)不,不是。我也试过了,但没用`db.execSQL(“如果不存在创建表
book
id
int(11)非空自动增量,
title
varchar(100)非空,
author\u name
varchar(100)非空,
text\b
text非空,主键(
id
)引擎=InnoDB默认字符集=latin1自动增量=1;”);”“你也有同样的语法错误吗<代码>故障1(接近“自动增量”:语法错误)
?与以下内容相同。。。您会收到相同的错误消息,但是使用了
AUTOINCRMENT
对吗?我删除了
引擎的属性和我在回答中提到的其他内容。这对我很有效。非常感谢您的回复。这将是我的下一个猜测哈哈。很高兴你明白了。您应该接受答案以结束问题。:)