如何在android中使用sqlite数据库创建表?

时间:2012-12-15 15:27:26

标签: android database android-sqlite

public class MyAct extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        SQLiteDatabase db = openOrCreateDatabase("MyDb",MODE_PRIVATE,null);
        db.execSQL("CREATE TABLE IF NOT EXISTS MyTab (Month INT(2),Date INT(2),Year INT(4),Event VARCHAR;");
        db.execSQL("INSERT INTO MyTab VALUES (0,1,2012,'mini_proj');");
        db.close();

    }
}

我已经写了这个小片段来创建一个表,但它不起作用。这段代码有什么问题?

1 个答案:

答案 0 :(得分:2)

在第一个查询中,您缺少一个结束括号:

CREATE TABLE IF NOT EXISTS MyTab (
    Month INT(2),
    Date INT(2),
    Year INT(4),
    Event VARCHAR;

应该是:

CREATE TABLE IF NOT EXISTS MyTab (
    Month INT(2),
    Date INT(2),
    Year INT(4),
    Event VARCHAR
)

另请注意,查询不需要以;结尾,如文档中所述:

  

<强>参数
   sql 要执行的SQL语句。 不支持以分号分隔的多个语句。

此外,您应始终检查您的LogCat输出,因为这应该抛出SQLiteException


进一步的SQLite注释:

  1. SQLite没有VARCHAR类型。它only has TEXT并将任何类似文本的类型转换为它。
  2. 请注意,SQLite也会忽略为数据类型提供长度:
  3.   

    SQLite 不会施加任何长度限制(除了大的   全局SQLITE_MAX_LENGTH限制)关于字符串,BLOB或的长度   数值。