[C#] Uniqueidentifier field uit mssql 2000 server halen

Pagina: 1
Acties:

  • fdv99
  • Registratie: Mei 2004
  • Laatst online: 01-12 12:21

fdv99

Penguin power

Topicstarter
Ik ben bezig met een windows programma te schrijven die gegevens moet verwerken uit een Microsoft SQL server (versie 2000) database.

Het probleem is dat ik uit de tabel een veld moet lezen die de definitie "Uniqueidentifier" heeft. Het lukt me om het veld als string uit de database te halen maar als ik dan later in het programma (in een andere tabel) een select query doe met als "WHERE id = variabele" krijg ik niet de juiste records terug.

Nu heb ik gevonden dat het beter is om het veld als binary uit de database te halen en die dan te gebruiken in de select query, maar de vraag is, hoe doe ik dat. Hoe haal ik een veld van het type uniqueidentifier uit een database en plaats het in een binary variabele zodat ik deze later weer kan gebruiken in een andere select query?

Voor de duidelijkheid, wat ik nu heb:
C#:
1
2
3
4
5
6
7
SqlCommand cmd1 = Conn.CreateCommand();
cmd1.CommandText = "SELECT * FROM " + table_Project_Relaties + " WHERE ProjectNr = '" + textBoxOffertenummer.Text + "'";
SqlDataReader rdr1 = cmd2.ExecuteReader();
while (rdr1.Read())
{
string cmp_id = rdr1.GetValue(rdr1.GetOrdinal("cmp_wwn")).ToString();
}


Nu krijg ik netjes een string terug met bijvoorbeeld de waarde {126FD1AB-B34E-45D9-96B9-71E83B7C63D2}.
Als ik nu in een volgend select query die variabele ga gebruiken:
C#:
1
2
3
4
5
6
7
SqlCommand cmd2 = Conn.CreateCommand();
cmd2.CommandText = "SELECT * FROM " + table_Relaties_adressen + " WHERE Account='" + cmp_id + "'";
SqlDataReader rdr2 = cmd2.ExecuteReader();
while (rdr2.Read())
{
// voorbeeld
}

Krijg ik niet de gewenste records terug.
Als ik het goed begrijp is het omdat het beter is om op een binary waarde te selecteren, zoals bijvoorbeeld: 0xA70D7183FE3A2246A6A93DBDAA3CA201

Hoe krijg ik deze waarde uit de database en plaats het in een variabele zodat ik hem later kan gebruiken voor de select query? In het boek wat ik van C# heb staat namelijk geen Data type voor een binary waarde, ook via google kon ik niet echt iets vinden, alleen maar hoe je een binaire waarde uit een com poort leest.

  • whoami
  • Registratie: December 2000
  • Laatst online: 00:54
Als je die uniqueidentifier gaat omzetten naar binary, en dan zo gaat zoeken, zal je volgens mij geen indexen kunnen gebruiken.
Hoe staat die UID in je DB ? Ik gebruik zelf ook unique-identifiers, maar ik behandel ze in m'n programma gewoon als strings. Dwz, ik haal ze op als string, en ik stop ze in m'n DB als string.
Zowiezo kan je ook eens kijken naar parametrized queries; naast het feit dat het veiliger is, zou het wel eens kunnen zijn dat je problemen zo ook snel opgelost geraken.

https://fgheysels.github.io/


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Als je een UID in een query passed moet je volgens mij streepjes gebruiken:
A70D7183-FE3A-2246-A6A9-3DBDAA3CA201

Zoiets en dus:
SQL:
1
Select A, B From SomeTable Where ID = 'A70D7183-FE3A-2246-A6A9-3DBDAA3CA201'

[ Voor 36% gewijzigd door RobIII op 06-03-2007 11:29 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 12:48

gorgi_19

Kruimeltjes zijn weer op :9

En zonder de accolades.

edit:

* gorgi_19 moet eens sneller gaan refreshen :X

[ Voor 56% gewijzigd door gorgi_19 op 06-03-2007 11:37 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • P_de_B
  • Registratie: Juli 2003
  • Niet online
Mag gewoon met hoor :)

Oops! Google Chrome could not find www.rijks%20museum.nl


  • fdv99
  • Registratie: Mei 2004
  • Laatst online: 01-12 12:21

fdv99

Penguin power

Topicstarter
Het klopt Whoami; je kan ze idd gewoon als string gebruiken, het probleem wat ik had zat in een ander gedeelte van het programma. Je moet natuurlijk wel het goede uid veld ophalen uit de database :+ . Zal trouwens wel eens kijken naar parametrized queries, ziet er wel interessant uit.

Heb nog ff gechecked en het maakt idd niet uit of je accolades of niet gebruikt.

Allemaal bedankt!
Pagina: 1