SQLite ADO.NET-如何正确使用查询生成器?

SQLite ADO.NET-如何正确使用查询生成器?,sqlite,Sqlite,以下代码可以完美地工作: 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

以下代码可以完美地工作:

  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();
但如果我尝试使用查询生成器(自动转义字符串):

提出了例外情况:

SQLite error
near "@param": syntax error

谁能给我一点知识,告诉我我做错了什么吗?

虽然我还没有测试过我,但这应该可以:
oCmd.Parameters.AddWithValue(“@param”、“none”)
编辑:如果在@param:

Edit2:嗯,ExecuteNonQuery()确实可以工作,但是结果不是预期的结果。 @param不会被acutal param替换。不要使用此代码!(现在是一个社区维基。也许有人能修复它?)


我把答案改成了一个有效的版本。然而,我真的不知道为什么那些()必须存在:声明也可以有一个没有括号的文本…我很惊讶它居然能工作。我不知道可以对数据定义语言语句使用参数绑定。tuinstoel似乎是正确的:查询执行正确,但@param不会被“none”替换-(太糟糕了,我的错误是没有正确测试它。我将编辑我的答案。谢谢tuinstoel。
SQLite error
near "@param": syntax error
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();