[C#] Select statement SQL , gridview

Pagina: 1
Acties:
  • 428 views sinds 30-01-2008

  • ClarkNova
  • Registratie: December 2005
  • Laatst online: 04-02 08:44
Ik ben bezig met een webapplicatie in APS.Net in C#. Ik heb een formulier gemaakt om geavanceerd te zoeken in een tabel. Maar bij het uitvoeren van de code krijg ik steeds een error dat de syntax van mijn sql statement fout is... Ik heb dezelfde syntax al uitgeprobeerd rechtstreeks in een query en dan lukt het wel. Hieronder staat de code van de methode waar de fout gegeven wordt. Kan iemand me zeggen waar ik fout zit, want ik ben al lang aanhet zoeken en vindt het niet .....

public List<Media> GetMedias2(string invM,string titelM, string taalM, string jaarM,string typeM, string keywordsM, string standplaatsM, string sortExpression)
{
using (SqlConnection oConn = new SqlConnection(_connectionString))
{
string strSql = "select * FROM Media";
if (!String.IsNullOrEmpty(invM)) strSql += " where (inventaris_nr like @invM) and";
if (!String.IsNullOrEmpty(titelM)) strSql += " (titel like @titelM) and";
if (!String.IsNullOrEmpty(taalM)) strSql += " (taal like @taalM) and";
if (!String.IsNullOrEmpty(jaarM)) strSql += " (jaartal like @jaarM) and";
if (!String.IsNullOrEmpty(typeM)) strSql += " (typeMedia like @typeM) and";
if (!String.IsNullOrEmpty(keywordsM)) strSql += " (keywords like @keywordsM) and";
if (!String.IsNullOrEmpty(standplaatsM)) strSql += " (standplaats like @standplaatsM)";
if (!String.IsNullOrEmpty(sortExpression))
strSql += " order by " + sortExpression;
else
strSql += " order by id";

SqlCommand oCmd = new SqlCommand(strSql, oConn);
oCmd.Parameters.Add(new SqlParameter("@invM", "%"+invM+"%"));
oCmd.Parameters.Add(new SqlParameter("@titelM", "%"+titelM+"%"));
oCmd.Parameters.Add(new SqlParameter("@taalM", "%"+taalM+"%"));
oCmd.Parameters.Add(new SqlParameter("@jaarM", "%"+jaarM+"%"));
oCmd.Parameters.Add(new SqlParameter("@typeM", "%"+typeM+"%"));
oCmd.Parameters.Add(new SqlParameter("@keywordsM", "%"+keywordsM+"%"));
oCmd.Parameters.Add(new SqlParameter("@standplaatsM", "%"+standplaatsM+"%"));
oConn.Open();
SqlDataReader oReader = oCmd.ExecuteReader();
List<Media> medias= GetMediaCollectionFromReader(oReader);
oReader.Close();
return medias;
}
}

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20:39

gorgi_19

Kruimeltjes zijn weer op :9

Heb je ook al met Profiler gekeken welk SQL Statement hij doorkrijgt?

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • ClarkNova
  • Registratie: December 2005
  • Laatst online: 04-02 08:44
nee, ik heb die niet..

Verwijderd

breakpoint zetten op oConn.Open() en kijken wat je op de dbase afvuurt?

  • whoami
  • Registratie: December 2000
  • Laatst online: 00:54
1: gebruik code-tags als je code post
2: zoals ik je al in de mail gezegd heb: als je Sql Profiler niet hebt, gebruik dan de trace & debug mogelijkheden die .NET je biedt om die SQL string ergens weg te schrijven, zodat je kan zien wat er uiteindelijk verstuurd wordt.

Ik heb gezien dat je nu uiteindelijk wel logische operators in je where clausule zet, maar als je eens goed nadenkt , dan staan die er niet goed.
Wat als enkel de string 'invM' niet leeg is ? Hoe dekn je dan dat je query er zal uit zien ?
Of wat als enkel de string 'titelM' niet leeg is ? Dan heb je opeens geen WHERE keyword meer.

maak je 'WHERE' clausule als volgt:
code:
1
string whereClause = "WHERE 1 = 1 ";

En ga dan na welke delen je er nog moet aan toevoegen.

.... ik denk dat je met deze tips er wel moet uitgeraken.

https://fgheysels.github.io/


Dit topic is gesloten.