Подтвердить что ты не робот

С# Использование Parameters.AddWithValue в SqlDataAdapter

Как я могу использовать Parameters.Add.WithValue в SqlDataAdapter. Ниже кодов поиска.

var da = new SqlDataAdapter("SELECT * FROM annotations WHERE annotation LIKE '%"+txtSearch.Text+"%'", _mssqlCon.connection);
var dt = new DataTable();
da.Fill(dt);

Я переписал код следующим образом:

SqlDataAdapter da;
da = new SqlDataAdapter("SELECT * FROM annotations WHERE annotation LIKE '%@search%'", _mssqlCon.connection);
da.SelectCommand.Parameters.AddWithValue("@search",txtSearch.Text);
var dt = new DataTable();
da.Fill(dt);

Но не удалось. Не могли бы вы помочь мне, где моя вина?

4b9b3361

Ответ 1

Строка, используемая для инициализации SqlDataAdapter, становится CommandText свойства SelectCommand для SqlDataAdapter.
Вы можете добавить параметры к этой команде с помощью этого кода

da = new SqlDataAdapter("SELECT * FROM annotations WHERE annotation LIKE @search",
                        _mssqlCon.connection);
da.SelectCommand.Parameters.AddWithValue("@search","%" + txtSearch.Text + "%");
  • Сначала удалите одиночную кавычку вокруг заполнитель параметров.
  • Во-вторых, добавьте символ подстановки непосредственно в параметр Value AddWithValue

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

Таким образом, тот же код без AddWithValue и с помощью синтаксиса Object and Collection Initialators может быть записан как

da = new SqlDataAdapter("SELECT * FROM annotations WHERE annotation LIKE @search",
                        _mssqlCon.connection);
da.SelectCommand.Parameters.Add(new SqlParameter
{
    ParameterName = "@search",
    Value = "%" + txtSearch.Text + "%",
    SqlDbType = SqlDbType.NVarChar,
    Size = 2000  // Assuming a 2000 char size of the field annotation (-1 for MAX)
});

Ответ 2

Попробуйте следующее:

mySearchString = "Select * From test Where ([title] LIKE '%' + @title + '%')";
cmd.Parameters.Add("@title", SqlDbType.VarChar, 120);
cmd.Parameters("@title").Value = TextBox1.Text;

Ответ 3

Я использую Repeater для показа данных

int queryString =int.Parse(Request.QueryString["Id"]);

SqlConnection conn =new SqlConnection("server=.; Database=Northwind; 
Integrated Security=true;");

try{
conn.Open();

SqlDataAdapter dataAdapter = new SqlDataAdapter("SELECT ProductID, ProductName, UnitPrice, CategoryID FROM Products WHERE CategoryID [email protected]tegoryID", conn);

dataAdapter.SelectCommand.Parameters.Add("@CategoryID", queryString);
                        DataSet dataSet = new DataSet();
                        dataAdapter.Fill(dataSet);
                        QueryStringProductListRepeater.DataSource = dataSet;
                        QueryStringProductListRepeater.DataBind();
}

catch{
Response.Write("QueryStringProductListRepeater");
}

finally{
conn.Close();
}