2012-11-07 14 views
17

Come posso utilizzare Parameters.Add.WithValue in SqlDataAdapter. Sotto i codici di ricerca.C# Utilizzo di Parameters.AddWithValue in SqlDataAdapter

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

ho riscritto il codice come questo:

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

ma non è riuscito. Potresti aiutarmi dov'è la mia colpa?

+0

Ooh dispiace. Quando ho fatto clic sul pulsante di ricerca, non ha dato alcuna reazione. –

risposta

48

La stringa usata per inizializzare l'SqlDataAdapter diventa il CommandText della SelectCommand proprietà del SqlDataAdapter.
si potrebbe aggiungere parametri per quel comando con questo codice

da = new SqlDataAdapter("SELECT * FROM annotations WHERE annotation LIKE @search", 
         _mssqlCon.connection); 
da.SelectCommand.Parameters.AddWithValue("@search","%" + txtSearch.Text + "%"); 
  • In primo luogo, rimuovere la singola citazione intorno al parametro segnaposto.
  • In secondo luogo, aggiungere il carattere jolly direttamente nel parametro Valore di AddWithValue

Hai chiesto di usare AddWithValue, ma ricorda che, mentre è una scorciatoia utile, ci sono anche numerosi inconvenienti e tutti Ben documentato.

Quindi, lo stesso codice senza AddWithValue e utilizzando la sintassi Object and Collection Initializers potrebbe essere scritto come

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

Prova questo:

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

io uso Repeater per Mostra dati

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