CreateL()
{
_LIT(KSQLCountry, "CREATE TABLE Country(CountryID INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,CountryName VARCHAR(45) NOT NULL,CountryCode VARCHAR(10) NOT NULL)");
User::LeaveIfError(iDatabase.Execute(KSQLCountry));
}
创建表时我想声明主键和外键
在创建表
期间显示运行时错误(崩溃)声明主键的正确方法
答案 0 :(得分:1)
我不知道您使用的是哪个数据库,但也许这会对您有所帮助
http://snippets.dzone.com/posts/show/1680
尝试使用COUNTER数据类型而不是INTEGER和AUTOINCREMENT。
另一个猜测:那不是带有下划线的AUTO_INCREMENT吗?
答案 1 :(得分:1)
AUTO_INCREMENT确实有下划线,这是SQL
中的错误答案 2 :(得分:0)
好像你正在使用旧的Symbian DBMS而不是SQLite。
旧的DBMS仅支持一小部分SQL。如果我的记忆很好,那只包括一些基本的SELECT
查询。
要使用旧DBMS创建表,请使用C ++ API,例如
CDbColSet* columns = CDbColSet::NewLC();
TDbCol id(_L("CountryID"), EDbColInt32);
id.iAttributes = TDbCol::EAutoIncrement | TDbCol::ENotNull;
columns->AddL(id);
columns->AddL(TDbCol(_L("CountryName"), EDbColText, 45));
columns->AddL(TDbCol(_L("CountryCode"), EDbColText, 10));
User::LeaveIfError(aDatabase.CreateTable(_L("Country"), *columns));
CleanupStack::PopAndDestroy(columns);
或者只使用最新的SQLite支持的RSqlDatabase
API。