Параметризация оператора SELECT ROWCOUNT sql - PullRequest
0 голосов
/ 09 декабря 2011

Я использую VS2005 C # и SQL Server 2005.

У меня есть несколько запросов SQL, в которые я преобразую их, используя параметры вместо конкатенаций для предотвращения внедрения SQL.

Ниже приведен SELECTзапрос с параметром-редактором:

string loggedinuser = (User.Identity.Name);

SqlDataSource1.SelectCommand = "SELECT * FROM [UserTable] where [" + DropDownList1.Text + "] like @searchtb AND [LoggedInUser] LIKE @userlog";
SqlDataSource1.SelectParameters.Add("searchtb", "%" + searchTB.Text + "%");
SqlDataSource1.SelectParameters.Add("userlog", "%" + loggedinuser+ "%");

Приведенный выше SQL-запрос ищет записи на основе ввода пользователя в текстовом поле поиска и возвращает результаты, которые соответствуют входным данным поиска и имени пользователя в базе данных.


У меня есть другой запрос SQL, который также является оператором SELECT .Однако на этот раз он не использует SqlDataSource, а использует cmd.Поэтому мне нужна помощь в преобразовании приведенного ниже оператора SQL в форму параметра:

string loggedinuser = (User.Identity.Name);

        string stmt = "SET ROWCOUNT 1 SELECT COUNT(*) FROM MP.dbo.UserTable where [" + DropDownList1.Text + "] like '%" + searchTB.Text + "%' AND [LoggedInUser] LIKE '%"+loggedinuser +"%'";
        int count = 0;

        using (SqlCommand cmdCount = new SqlCommand(stmt, thisConnection))
        {
                thisConnection.Open();
                count = (int)cmdCount.ExecuteScalar();
                thisConnection.Close();
        }

Этот запрос SQL ищет количество записей, которые пользователь пытается найти, основываясь на его входных данных для поиска и имени пользователя.И если countuser вернет значение 0, я после этого предложу пользователю.


Мне нужна помощь в преобразовании 2-го оператора SQL в форму параметра.

Спасибо.

Ответы [ 2 ]

1 голос
/ 09 декабря 2011

Попробуйте,

string stmt = "SELECT COUNT(*) FROM MP.dbo.UserTable where [" + DropDownList1.Text + "] 
                    like @searchTb AND [LoggedInUser] LIKE  @loggedinuser";

    int count = 0;

    using (SqlCommand cmdCount = new SqlCommand(stmt, thisConnection))
    {
            cmdCount.Parameters.Add("@searchTb",SqlDbType.VarChar,40).Value="%" + searchTB.Text + "%"; 
            cmdCount.Parameters.Add("@loggedinuser",SqlDbType.VarChar,40).Value="%" + loggedinuser + "%"; 

            thisConnection.Open();
            count = (int)cmdCount.ExecuteScalar();
            thisConnection.Close();
    }
0 голосов
/ 09 декабря 2011

Лучше всего использовать хранимые процедуры, но если вы не можете их использовать, этот код должен работать:

SqlDataAdapter myCommand = new SqlDataAdapter(
"SELECT au_lname, au_fname FROM Authors WHERE au_id = @au_id", conn);
SQLParameter parm = myCommand.SelectCommand.Parameters.Add("@au_id", 
                        SqlDbType.VarChar, 11);
Parm.Value = Login.Text;

Это из статьи MSDN о внедрении SQL. http://msdn.microsoft.com/en-us/library/ms161953.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...