我是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 ;'.
请帮助我。提前谢谢。
答案 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
)。删除它们。