Отлично работает следующий код:
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();
Но если я попытаюсь использовать построитель запросов (для автоматического экранирования строк):
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();
Исключение повышено:
SQLite error
near "@param": syntax error
Может кто-нибудь, пожалуйста, сэкономить немного знаний и подсказать мне, что я делаю не так?