Toon posts:

[C# + SQL server 2000] findByName method probleem

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hoi,

Hieronder zien jullie de source code van 2 zoek methods. De returned zoekt iets op aan de hand van een ID (primary key van een table). en de andere bij naam.

De FindRow method doet het perfect. Alleen de FindRowIDByName doet het helaas niet. Ik krijg een System.Data.EvaluateException. exception wanneer de DataTable.Select method wordt uitgevoerd.

Ik heb met de debugger langs gelopen. hij geeft netjes de column naam weer. Ook de zoek waarde geeft die netjes weer. maar helaas heb ik geen flauw id waar het mis gaat.

kan het misschien komen omdat ik een varchar gebruikt in sql server 2000 en in .NET een normale string?


code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public DataRow FindRow(int id)
{
    String filter = String.Format(table.Columns[0].ToString()+"={0}",id);
    DataRow[] results = table.Select(filter);
    if(results.Length==0)
    {
        return null;
    }
    else
    {
        return results[0];
        
                }
}


code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public DataRow FindRowIDBYName(string name)
{
            
    String filter = String.Format(ColumnPrimeName+"={0}",name);
    DataRow[] results = table.Select(filter);
    if(results.Length==0)
    {
        return null;
    }
    else
    {
        return results[0];
    }
}

  • bigbeng
  • Registratie: Augustus 2000
  • Laatst online: 26-11-2021
Als ik mij de filters van ADO goed herinner dan moet je om de waarde nog een set enkele quotes plaatsen. Je kunt namelijke meerdere velden opnemen in je filter en dan moet ie een waarde kunnen onderscheiden van een veldnaam. Net als in een query, dus dat betekent dat je numerieke waarden niet hoeft te quoten en string waarden wel.

  • whoami
  • Registratie: December 2000
  • Laatst online: 00:06
Op welke regel krijg je die fout ?
Zou je trouwens misschien geen quotes rond die 'name' zetten.
Heb je de inhoud van filter al eens bekeken als regel 4 uitgevoerd werd ?
Van waar komt die ColumnPrimeName ?

Kortom, dit is eigenlijk een gevalletje basic debuggen, en dat moet je toch echt wel zelf kunnen. Een programmeur moet z'n code kunnen debuggen, dat is één van de vereiste skillls die je moet hebben.

Tipje: als je zoekt op iets alfanumerieks, moet je quotes gebruiken rond je zoekwaarde.

https://fgheysels.github.io/


Verwijderd

Topicstarter
#edit#

probleem is gevonden moest inderdaad quotjes er tussen. Bedankt allemaal en mij excuses. Moet denk ik meer gaan debuggen om ervaring op te kunnen doen.

[ Voor 92% gewijzigd door Verwijderd op 10-11-2005 13:43 ]