2014-02-13 4 views
1

У меня есть запрос SQL (показано ниже), что мне нужно регулярно запускать на 5 разных страницах. Мой вопрос в том, есть ли способ, который я могу написать это один раз, и называть его на каждой странице (возможно, используя функцию или помощник)?Webmatrix - запрос вставки в многоразовую базу данных

if(IsPost){ 
    var ImageCount = db.QueryValue("SELECT COUNT (*) FROM Property_Images WHERE PropertyID = @0", rPropertyId); 
    var RateCount = db.QueryValue("SELECT COUNT (*) FROM RateInfo WHERE PropertyID = @0", rPropertyId); 
    var ExpiryDate = db.QueryValue("SELECT ExpiryDate FROM Property_Info WHERE PropertyID = @0", rPropertyId); 


    if(ImageCount > 0 && RateCount > 0 && ExpiryDate > DateTime.Now){ 
     db.Execute("UPDATE Property_Info SET IsActive = 1 WHERE PropertyID = @0", rPropertyId); 
    } else { 
     db.Execute("UPDATE Property_Info SET IsActive = 0 WHERE PropertyID = @0", rPropertyId); 
    } 
    Response.Redirect(Request.RawUrl); 
    } 

я использовал функции, прежде чем повторно использовать запросы SQL, но я всегда присваивались их как «BOOL», как результат либо истинно, либо силой, но это не так с этим особенно запрос. Есть идеи?

ответ

2

Методы могут возвращать пустоту (или ничего). Ваш текущий код транскрибируется функции может выглядеть следующим образом:

@functions{ 
    public static void UpdateProperty(int propertyId, Uri url){ 
     var db = Database.Open("...."); 
     var ImageCount = db.QueryValue("SELECT COUNT (*) FROM Property_Images WHERE PropertyID = @0", propertyId); 
     var RateCount = db.QueryValue("SELECT COUNT (*) FROM RateInfo WHERE PropertyID = @0", propertyId); 
     var ExpiryDate = db.QueryValue("SELECT ExpiryDate FROM Property_Info WHERE PropertyID = @0", propertyId); 


     if(ImageCount > 0 && RateCount > 0 && ExpiryDate > DateTime.Now){ 
      db.Execute("UPDATE Property_Info SET IsActive = 1 WHERE PropertyID = @0", propertyId); 
     } else { 
      db.Execute("UPDATE Property_Info SET IsActive = 0 WHERE PropertyID = @0", propertyId); 
     } 
     HttpContext.Current.Response.Redirect(url); 
    } 
} 

Тогда вы могли бы назвать это так:

Is(IsPost){ 
    Functions.UpdateProperty(rPropertyId, Request.RawUrl); 
} 
+0

, я видел статическую пустоту, используемую так много в примерах, но никогда не понимал, что это значит, так что большое спасибо! Я отдам это прямо сейчас! – Gavin5511

+0

Майк, я получаю эту ошибку «Лучшее перегруженное соответствие метода для« ASP.Functions.ActiveCheck (int) »имеет некоторые недопустимые аргументы« любая идея, почему? – Gavin5511

+0

Игнорируйте меня, это была одна из тех «ошибок пользователя»! работая сейчас, спасибо – Gavin5511

2

Не можете ли вы использовать SPROC? вы также можете вернуть выходные параметры, если они вам понадобятся.

string SQL = "exec dbo.myprocname @0"; 
db.Execute(SQL, rPropertyId); 
+1

вопрос не уточняет, что используется тип SQL Server. Хранимая процедура может быть решением, но не с SQL Ce. – GmG

+0

yep, вот почему я спросил его, может ли он использовать их ... если он может, я все же думаю, что это было бы лучшим решением, чтобы иметь все sql в sproc –

Смежные вопросы