J'essaie de faire une recherche sur une table dans ma base de données où il renvoie les 50 premières lignes avec un prénom comme le terme de recherche étant passé à la fonction, mais son retour toujours les mêmes 50 résultatsSQL toujours retourner les mêmes résultats
mon sql ressemble à ceci:
Select TOP(50) *
FROM [database].[dbo].[records]
WHERE (A_1STNAME LIKE '" + @searchTerm + "%')
ORDER BY A_RECID
quand je lance cette requête dans la fenêtre de requête de Visual Studios, il fonctionne comme prévu, mais quand je le lance dans mon application ASP.NET, il renvoie toujours le même 50 résultats, et un seul d'entre eux a un prénom proche de la recherche que je lui ai passé.
est ici le code de page qui exécute la fonction:
protected void Page_Load(object sender, EventArgs e)
{
_migrated_data data = new _migrated_data();
DataSet ds = data.Search(Request.QueryString.Get("query"), "A_RECID", 50);
if (ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0)
{
rpt_Data.DataSource = ds.Tables[0].DefaultView;
rpt_Data.DataBind();
}
}
et voici la méthode de recherche de _migrated_data:
public DataSet Search(String @pSearchTerm, String @pSortBy, int @pRowCount)
{
DataSet ds = new DataSet();
OleDbConnection objOleDBConn;
OleDbDataAdapter objOleDBDa;
objOleDBConn = new OleDbConnection(ClearingHouse_OLEDDB);
objOleDBConn.Open();
string lSQL = "SELECT TOP(50) * FROM [database].[dbo].[records]";
lSQL += " WHERE (A_1STNAME LIKE @searchTerm) ORDER BY @sortBy";
SqlCommand t = new SqlCommand(lSQL);
if (pSearchTerm != null && pSearchTerm != "")
{
t.Parameters.AddWithValue("@searchTerm", @pSearchTerm + "%");
}
if (pSortBy != null && pSortBy != "")
{
t.Parameters.AddWithValue("@sortBy", @pSortBy);
}
else
{
t.Parameters.AddWithValue("@sortBy", "A_RECID");
}
objOleDBDa = new OleDbDataAdapter(t.CommandText, objOleDBConn);
objOleDBDa.SelectCommand.CommandType = CommandType.Text;
objOleDBDa.Fill(ds);
objOleDBConn.Close();
return ds;
}
Utiliser locals pour voir la CommandText finale de t, je reçois la résultats sql j'ai donné ci-dessus.
Toute aide est grandement appriciated :)
Etes-vous sûr que votre application a passé un SQL valide? Je veux dire, avez-vous utilisé SqlCommand.Parameters.Add (... – rkosegi
Etes-vous sûr que le terme recherché n'est pas codé en dur quelque part dans votre page ASP? –
Notez également que votre SQL actuel est ouvert à l'injection SQL comme vous l'avez. devrait passer le terme de recherche comme un paremeter comme le suggère @rkosegi –