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

    }
}

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

最佳答案

在第一个查询中,缺少右大括号:

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语句。不支持用分号分隔的多个语句。
此外,您应该始终检查logcat输出,因为这将抛出SQLiteException
一些进一步的sqlite注释:
sqlite没有VARCHAR类型。它only has TEXT并将任何类似文本的类型转换为它。
请注意,sqlite也会忽略为数据类型指定长度:
sqlite不施加任何长度限制(除了
字符串、blob或
数值。

关于android - 如何在Android中使用SQLite数据库创建表?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13893473/

10-11 22:29
查看更多