我正在尝试使用C#代码向CE数据库中的表添加新列。
此SQL在SSMS中工作以添加到标准SQL数据库表:
IF NOT EXISTS(SELECT * FROM sys.columns WHERE Name = N'sent' AND Object_ID = Object_ID(N'QAReports')) BEGIN
ALTER TABLE QAReports ADD [Sent] bit NULL;
END
但是当我尝试在C#中运行相同的sql时出现错误:
解析查询时出错。 [令牌行号= 1,令牌行偏移= 1,令牌错误= IF]
我用来执行上述SQL的代码是:
bool retVal = true;
try
{
using (var connection = new SqlCeConnection(ConnString))
{
connection.Open();
using (var command = connection.CreateCommand())
{
command.CommandText = sql;
command.CommandType = CommandType.Text;
command.ExecuteNonQuery();
}
connection.Close();
}
}
catch (Exception ex)
{
retVal = false;
}
return retVal;
有没有办法做我想做的事。
有没有更好的方法。我正在尝试在最终用户安装时升级数据库,如果他们需要的话。我检查数据库中的一个值,该值告诉我上次使用的应用程序版本。然后我想运行SQL来添加必需的字段,然后更新数据库中应用程序版本的值。