【问题标题】:creating android db table创建 android 数据库表
【发布时间】:2012-06-08 22:57:49
【问题描述】:

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

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

请帮助我。提前致谢。

【问题讨论】:

    标签: android mysql database sqlite debugging


    【解决方案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
    );
    

    【讨论】:

    • 不,不是。我也试过了,但没有帮助。 ` db.execSQL("如果不存在则创建表book (id int(11) NOT NULL AUTOINCREMENT,title varchar(100) NOT NULL,author_name varchar(100) NOT NULL,text_b text非空,主键 (id)) ENGINE=InnoDB 默认字符集=latin1 AUTOINCREMENT =1 ;"); `
    • 你得到同样的语法错误? Failure 1 (near "AUTOINCREMENT": syntax error)?
    • 这和什么一样...你得到了同样的错误信息但是AUTOINCRMENT对吗?
    • 我删除了属性Engine 以及我在回答中提到的其他内容。这对我有用。非常感谢您的回复。
    • 这将是我的下一个猜测哈哈。很高兴你想出来了。您应该接受答案以关闭问题。 :)
    【解决方案2】:

    这在我的情况下终于奏效了。

    答案:

    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】:

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

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

      你也可以看看这篇文章:

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

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

      【讨论】:

      • 我使用 wampServer 创建了数据库,并导出了 sql 文件并尝试将代码复制到这里,但这不起作用。
      【解决方案4】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-08-26
        • 2012-08-15
        • 2013-04-27
        • 1970-01-01
        • 2011-09-04
        相关资源
        最近更新 更多