2009-09-08 4 views
0
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)); 
} 

tandis que le tableau créant que je veux déclarer pour la clé primaire et cléerreur de déclaration clé primaire lors de la création de la table

étrangère qui affiche l'erreur de temps d'exécution (il se bloque) lors de la création de la table

ce qui est juste façon de déclarer la clé primaire

+0

Quel RDBMS utilisez-vous? –

+0

Symbian semble impliquer SQLite; Tags modifiés pour refléter. – chaos

+0

Quel est le message d'erreur que vous obtenez? –

Répondre

1

Je ne sais pas quelle DB utilisez-vous, mais peut-être que cela vous aidera

http://snippets.dzone.com/posts/show/1680Essayez d'utiliser le type de données COUNTER au lieu de INTEGER et AUTOINCREMENT. Une autre supposition: n'est pas que AUTO_INCREMENT avec soulignement?

1

AUTO_INCREMENT est en effet avec underscore, c'est l'erreur dans ce SQL

0

On dirait que vous utilisez l'ancien héritage SGBD Symbian et non SQLite.

L'ancien SGBD ne prend en charge qu'un petit sous-ensemble de SQL. Si ma mémoire me sert bien, cela ne comprend que quelques requêtes de base SELECT.

Pour créer des tables à l'aide de l'ancien SGBD, utilisez l'API C++, par ex.

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

Ou tout simplement utiliser plus récente API RSqlDatabase SQLite soutenu.

Questions connexes