我使用的是SQL Server CE,因此我无法使用条件语句。我试图检查记录是否存在,如果存在,则更新它,如果没有,则创建它。
我打印出检查值,它是-1。
var db = Database.Open("DB2");
var check = "SELECT count(*) FROM QuestionnaireData WHERE ID=" + WebSecurity.CurrentUserId;
if (db.Execute(check) == 0)
{
var insert = "INSERT INTO QuestionnaireData VALUES (@0, @1)";
db.Execute(insert, WebSecurity.CurrentUserId, "TEST");
}
else {
var update = "UPDATE QuestionnaireData SET Q1='" + "TEST" + "' WHERE ID=" + WebSecurity.CurrentUserId;
db.Execute(update);
};
答案 0 :(得分:2)
Execute()
报告的智能感知:
执行非查询SQL语句。
由于您实际上是在查询数据,因此您需要Query()
方法之一。
由于您只需要一个值(计数),请使用QueryValue()
:
执行一个SQL查询,返回单个标量值作为结果。
请改为尝试:
var count = Convert.ToInt32(db.QueryValue(check));
答案 1 :(得分:2)
我重写了您的代码,更多地关注Webmatrix.Data库的语法
@{
var db = Database.Open("DB2");
var check = "SELECT * FROM QuestionnaireData WHERE Id = @0";
var questionnaire = db.Query(check, WebSecurity.CurrentUserId);
if (questionnaire.Any())
{
var update = "UPDATE QuestionnaireData SET Q1 = 'TEST' WHERE ID = @0";
db.Execute(update, WebSecurity.CurrentUserId);
}
else {
var insert = "INSERT INTO QuestionnaireData (Id, Q1) VALUES (@0, @1)";
db.Execute(insert, WebSecurity.CurrentUserId, "TEST");
}
}
我希望它可以提供帮助。