Member 14794855 Ответов: 2

Как конвертировать ASP classic в строку .NET public actionresult


Function getRefundPayId(refundId,parentId)

	If refundId <> "" Then 
	sql = "select PayID from (select PayID,RID from epayment with (nolock) where ParentPayid = " & sqlS(parentId) & " ) As rid Where Rid  = " & sqlS(refundId) 
		set rs = my_conn.execute(sql) 
		if not rs.eof then
			RefundPayid = rs("payid") 
			 
		end if
		set rs=nothing
	End If 
getRefundPayId = RefundPayid 
End Function





//Ценю, что кто-то может преобразовать это в строку. Спасибо.

Что я уже пробовал:

public ActionResult (string refundId, string parentId)
{
язык SQL =
select PayID from (select PayID,RID from epayment with (nolock) where ParentPayid = " & sqlS(parentId) & " ) As rid Where Rid  = " & sqlS(refundId) 
		set rs = my_conn.execute(sql);

{@refundId, refundId},
{@parentId, parentID}

}

2 Ответов

Рейтинг:
2

MadMyche

В вашем запросе есть несколько вопросов:
1. В классическом ASP, который вы указали в функции, которая вызывается на странице.
2. Классической АСП вы предоставили звонит еще одна пользовательская функция: sqlS

Поэтому я могу работать только с тем, что я знаю, и будет сделано на основе:
1. ЭКВИВЕЛАНТ .NET также будет функцией, которая может быть вызвана ActionResult метод.
2. Для защиты от SQL-инъекций метод использовать Параметры.
3. sqlS предполагается, что это какой-то вид В SQL Sanitatizion
4. Подзапрос действительно не нужен.
5. PayID, Rid и refundID, скорее всего, определяются как INT в SQL
6. нет необходимости в "наборе записей", когда возвращается только 1 значение.

Это даст нам что-то вроде этого

public int getRefundPayId(int refundId, int parentID) {
   int RefundPayid = -1;

   if (refundId != null) {
      string query = "SELECT PayID FROM epayment with (nolock) WHERE ParentPayid = @ParentPayid AND Rid = @Rid";
      using (SqlCommand cmd = new SqlCommand(query, my_conn)) {
         cmd.Parameters.AddWithValue("@ParentPayid", parentId);
         cmd.Parameters.AddWithValue("@Rid", refundId);

         RefundPayid = (int)cmd.ExecuteScalar();
      }
   }
   return RefundPayid;
}


Рейтинг:
2

#realJSOP

0) никогда не используйте конкатенацию строк в SQL-запросах. Вы настраиваете себя на атаки SQL - инъекций.

1) Вы должны делать все ваши SQL worek из стека DAL и BLL. Это отделяет бэкэнд от пользовательского интерфейса.

2) Вы не упомянули, какой SQL вы используете. Это MS SQL, MySql, SomeOtherSQL? Из-за этого я не знаю, как на самом деле ответить на ваш вопрос.


Member 14794855

Привет,
Спасибо за совет относительно SQL-запросов. Я использую MySQL.