参数化SELECT ROWCOUNT sql语句

本文关键字:sql 语句 ROWCOUNT SELECT 参数 | 更新日期: 2023-09-27 18:17:23

我使用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值,我将在此之后提示用户。


我需要帮助在转换第二个SQL语句成参数的形式。

谢谢。

参数化SELECT ROWCOUNT sql语句

试试,

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();
    }

使用存储过程是您最好的选择,但是如果您不能使用它们,下面的代码应该可以工作:

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