with selectcommand mysqldataadapter ejemplos addwithvalue c# parameters ado.net sqldataadapter

selectcommand - sqldataadapter c# ejemplos



c#Usando Parameters.AddWithValue en SqlDataAdapter (4)

Cómo puedo usar Parameters.AddWithValue con un SqlDataAdapter. Abajo los códigos de búsqueda.

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

Reescribí el código así:

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

pero falló


La cadena utilizada para inicializar SqlDataAdapter se convierte en el CommandText de la propiedad SelectCommand de SqlDataAdapter.
Podrías agregar parámetros a ese comando con este código.

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

  • Primero, elimine la comilla simple alrededor del marcador de posición del parámetro.
  • Segundo, agregue el carácter comodín directamente en el parámetro Valor de AddWithValue

Ha solicitado utilizar AddWithValue , pero recuerde que, si bien es un atajo útil, también hay numerosos inconvenientes y todos están bien documentados.

Por lo tanto, el mismo código sin AddWithValue y con la sintaxis de inicializadores de objetos y colecciones podría escribirse como

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


Prueba esto:

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


Use da.SelectCommand.Parameters.Add() lugar de cmd.Parameters.Add() , aquí hay una muestra para tratar un procedimiento almacenado que toma dos parámetros y el segundo es un parámetro int que puede cmd.Parameters.Add() :

public DataTable GetData(int par1, int? par2) { using (SqlConnection conn = new SqlConnection(connectionString)) { using (SqlDataAdapter da = new SqlDataAdapter()) { string sql = "StoreProcedure_name"; da.SelectCommand = new SqlCommand(sql, conn); da.SelectCommand.CommandType = CommandType.StoredProcedure; da.SelectCommand.Parameters.Add("@Par1", SqlDbType.Int).Value = par1; da.SelectCommand.Parameters.Add("@Par2", SqlDbType.Int).Value = (object)par2?? DBNull.Value; DataSet ds = new DataSet(); da.Fill(ds, "SourceTable_Name"); DataTable dt = ds.Tables["SourceTable_Name"]; //foreach (DataRow row in dt.Rows) //{ //You can even manipulate your data here //} return dt; } } }


Yo uso Repeater para mostrar datos

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 =@CategoryID", 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(); }