C# 使用SQLiteParameter设置默认值
我的查询应该在“Settings\u Global”表中添加一个额外的列“\u DisableAccounting”,使用SQLitePareter指定默认值C# 使用SQLiteParameter设置默认值,c#,sqlite,system.data.sqlite,C#,Sqlite,System.data.sqlite,我的查询应该在“Settings\u Global”表中添加一个额外的列“\u DisableAccounting”,使用SQLitePareter指定默认值 ALTER TABLE Settings\u Global ADD COLUMN`\u DisableAccounting`BOOL NOT NULL DEFAULT@defaultValue; 执行SQLiteCommand时,@defaultValue应替换为提供的参数 /。。。。 SQLiteParameter defaultVa
ALTER TABLE Settings\u Global ADD COLUMN`\u DisableAccounting`BOOL NOT NULL DEFAULT@defaultValue;
执行SQLiteCommand时,@defaultValue应替换为提供的参数
/。。。。
SQLiteParameter defaultValueParam=null;
如果(默认值!=null){
query+=“DEFAULT@defaultValue`”;
defaultValueParam=new SQLiteParameter{ParameterName=“@defaultValue”,Value=defaultValue};
}
查询+=“;”;
使用(SQLiteCommand cmd=\u Connection.CreateCommand()){
cmd.CommandText=查询;
if(defaultValueParam!=null){
cmd.Parameters.Add(defaultValueParam);
}
cmd.ExecuteNonQuery();
}
// ....
但是,我在附近得到了错误“'SQL逻辑错误或缺少数据库”
@defaultValue“:语法错误'。因此,该命令似乎从未用实际值替换@defaultValue
为什么这不起作用?我对MySQL的做法基本上是一样的(我的应用程序可以选择使用MySQL),而且它也在起作用。您似乎有一个虚假的严重口音。也就是说@defaultValue后面跟着严重口音,而它可能不应该是 试着改变
ALTER TABLE Settings_Global ADD COLUMN `_DisableAccounting` BOOL NOT NULL DEFAULT @defaultValue`;
到
或
在执行ALTERTABLE时,SQLite不会以任何方式修改列定义,而是直接将其插入CREATETABLE语句的末尾。 这意味着参数标记将在CREATETABLE语句中结束,这将导致在稍后解释该语句时参数值不可用
您必须将默认值直接插入SQL命令。伪grave重音是完全按照您的建议使用“@defaultValue”的结果。但这导致默认值实际上是字符串“@defaultValue”“。在复制/粘贴示例之前,我没有删除尾随grave,因此,很抱歉造成混淆。请您解释一下“SQLite不以任何方式修改列定义”的含义好吗?”?如果“添加列”没有修改/添加相应的列定义,“添加列”应该如何工作?
ALTER TABLE Settings_Global ADD COLUMN `_DisableAccounting` BOOL NOT NULL DEFAULT @defaultValue;
ALTER TABLE Settings_Global ADD COLUMN `_DisableAccounting` BOOL NOT NULL DEFAULT `@defaultValue`;