IDataReader가 오래되어 일부 코드가 더러운 코드로 인식되지만 사이트에서이 코드를 사용하고 있습니다. 여러 조인을 사용하여 테이블에서 특정 ID를 얻기 위해 쿼리를 실행하는 IDataReader 문이 있습니다. 이제이 사이트에는 DAL이 있지만 한 번에 하나의 표에서 선택할 수있는 기능 만 지원하므로 조인과 함께 select 문을 사용하면이 기능이 작동하지 않습니다. 이것이 IDataReader를 강제로 사용해야하는 이유입니다.IDataReader 읽지 않음, 오류 없음
if (Request.QueryString["CategoryId"].ToString() == "0")
{
using (IDataReader getCategoryID = DB.GetRS("SELECT ItemCatalogCategory.CategoryID FROM UserCustomerCatalog INNER JOIN ItemCatalogCategory ON UserCustomerCatalog.ItemProfileCatalogID = ItemCatalogCategory.ItemProfileCatalogID " +
"INNER JOIN ItemCategory ON ItemCatalogCategory.CategoryID = ItemCategory.CategoryID INNER JOIN StoreCatalog ON UserCustomerCatalog.StoreCatalogID = StoreCatalog.StoreCatalogID " +
"WHERE UserCustomerCatalog.ItemProfileCatalogID = '" + Request.QueryString["CatalogID"] + "' AND UserCustomerCatalog.CustomerID =' " + Session["Customer"].ToString() + "' AND ItemCategory.ProductID = '" + productis + "'"))
{
if (getCategoryID.Read())
{
string categoryID = getCategoryID["ItemCatalogCategory.CategoryID"].ToString();
string lookmike = Request.Url.AbsolutePath + "?CatalogID=" + catalogis + "&ProductID=" + productis + "&CatalogIndex=" + Request.QueryString["CatalogIndex"] + "&CategoryID=" + categoryID;
Response.Redirect(Request.Url.AbsolutePath + "?CatalogID=" + catalogis + "&ProductID=" + productis + "&CatalogIndex=" + Request.QueryString["CatalogIndex"] + "&CategoryID=" + categoryID);
}
else
{
Response.Redirect(Request.Url.AbsolutePath + "?CatalogID=" + catalogis + "&ProductID=" + productis + "&CatalogIndex=" + Request.QueryString["CatalogIndex"] + "&CategoryID=" + Request.QueryString["CategoryId"]);
}
}//end using getCategoryID
}
이 내가 무슨이지만 얻을 때까지 :
if (getCategoryID.Read())
는 허위 렌더링 던져 예외 및 오류 또는 경고가 없습니다. 과거에이 유형의 선택을 문제없이 수행했지만, .Read()가 false를 반환하는 이유를 알아낼 수 없습니다.
누구나 읽을 수없는 이유를 제시 할 수 있습니까? 더 많은 코드가 필요한 경우 필요에 따라 제공 할 수 있습니다. 어떤 도움을 주셔서 감사합니다, 미리 감사드립니다. 당신의 SQL 텍스트를 보면
실제로 결과가없는 것이 가능합니까? 사용중인 DB 시스템에 관계없이 생성중인 SQL 쿼리를 실행할 때 얼마나 많은 결과가 반환됩니까? –
"IDataReader가 오래되었다는 것을 깨닫고 일부는 더티 코드로 보았습니다"적어도 DataTable은 아니지만 데이터 판독기는 정상입니다. 개인적으로 나는 UI * 옆에 * little * (UI 바로 옆)이 아니라 그것을 숨길 수 있습니다. –
그러나 *에는 *, *** *** 거대한 *** SQL 주입 구멍이 있습니다. 매우 안전하지 않은 코드. (여전히 찾고 ...) –