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/