navi G Ответов: 1

Как сделать этот код с помощью хранимой процедуры ASP.NET с#


я хочу использовать поисковый запрос на странице aspx.cs с помощью хранимой процедуры. как ?

я хочу знать, как это сделать на странице Aspx.cs ?

пожалуйста, проверьте мой код хранимой процедуры .

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

ALTER PROCEDURE dbo.SP_searchitem
	
	(
	@srch varchar(50)
	)
	
AS
BEGIN
SELECT phonename 
FROM legacy WHERE phonename=@srch
END	


protected void Button1_Click(object sender, EventArgs e)
    {
        string search = TextBox1.Text;
        Session["search"] = search;
        Response.Redirect("Mainsearch.aspx");
    }


SqlConnection con = new SqlConnection();
    
    string search;
    string query;
    protected void Page_Load(object sender, EventArgs e)
    {
        
        con.ConnectionString = ConfigurationManager.ConnectionStrings["conn"].ConnectionString;
        con.Open();
        try
        {
            search = Convert.ToString(Session["search"]);
            query = "select * from legacy where upper(phonename) like '%" +  search.ToUpper().ToString() + "%'";
  
             SqlDataSource1.SelectCommand = query;
                SqlDataSource1.DataBind();
                lbl_page_heading.Text = Convert.ToString(search);
                Page.Title = Convert.ToString(search);
                lbldate.Text = "" + "" + (DateTime.Now.ToString("dd/MMM/yyyy"));
                con.Close();
        }
        catch (Exception ex)
        {
            Response.Write(ex.ToString());
        }

    }

#realJSOP

0) работает ли ваша хранимая процедура в вашей базе данных?

1) разве ваша копия Visual Studio не поставляется с отладчиком?

1 Ответов

Рейтинг:
11

OriginalGriff

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

Вам не нужен SP, чтобы сделать базовый выбор. Закодируйте его в своем приложении во что бы то ни стало, но используйте параметризованный запрос, чтобы избежать повреждения или удаления вашей базы данных вашими пользователями...

search = Convert.ToString(Session["search"]);
query = "SELECT * FROM legacy WHERE UPPER(phonename) like '%' + @SS + '%'";  
SqlDataSource1.SelectCommand = query;
SqlDataSource1.SelectParameters.AddWithValue("@SS", search.ToUpper());



Цитата:
на самом деле я не знаю, как использовать хранимую процедуру с Aspx. cs

Это почти то же самое, что и версия" raw query":
SqlDataSource1.SelectCommandType = SqlDataSourceCommandType.StoredProcedure;
SqlDataSource1.SelectCommand = "SP_searchitem";
SqlDataSource1.SelectParameters.AddWithValue("@srch", "Text to search for");


navi G

спасибо, сэр, я ценю вашу помощь.
на самом деле я не знаю, как использовать хранимую процедуру с Aspx. cs

navi G

могу ли я вставить это решение так же, как вы разместили?
я не очень хорошо владею английским языком, так что постарайтесь понять.

OriginalGriff

Ответ обновлен

navi G

Большое спасибо!.

OriginalGriff

Пожалуйста!