Le code suivant fonctionne parfaitement:SQLite ADO .NET - comment utiliser correctement le générateur de requêtes?
var oDb = new SQLiteConnection();
oDb.ConnectionString = String.Format(
"Data Source={0};"
+ "Synchronous=Full;",
"test.db");
oDb.Open();
SQLiteCommand oCmd = new SQLiteCommand(oDb);
oCmd.CommandText = "create table tests (";
oCmd.CommandText += " id guid primary key not null";
oCmd.CommandText += ", name text default 'none')";
oCmd.ExecuteNonQuery();
Mais si je tente d'utiliser un générateur de requêtes (pour échapper automatiquement les chaînes):
var oDb = new SQLiteConnection();
oDb.ConnectionString = String.Format(
"Data Source={0};"
+ "Synchronous=Full;",
"test.db");
oDb.Open();
SQLiteCommand oCmd = new SQLiteCommand(oDb);
oCmd.CommandText = "create table tests (";
oCmd.CommandText += " id guid primary key not null";
oCmd.CommandText += ", name text default @param)";
var oParam = new SQLiteParameter("@param", "none");
oCmd.Parameters.Add(oParam);
oCmd.ExecuteNonQuery();
exception est levée:
SQLite error
near "@param": syntax error
Can quelqu'un s'il vous plaît épargner un peu de connaissance et me fait signe ce que je fais mal?
exactement la même exception :( – grigoryvp
j'ai changé ma réponse à une version de travail. Cependant, je ne sais pas vraiment pourquoi les() doivent être présent: http://www.sqlite.org/syntaxdiagrams.html#column-constraint indique qu'il peut y avoir aussi un littéral sans les parenthèses ... – tobsen
Je suis surpris que cela fonctionne, je ne vous connaissais pas pourrait utiliser la liaison de paramètres avec des instructions de langage de définition de données – tuinstoel