login  Naam:   Wachtwoord: 
Registreer je!
 Forum

C# mysql bytearray

Offline VonDutch - 01/04/2005 17:11
Avatar van VonDutchPHP interesse Met C# ben ik een beetje met Mysql aan het kloten, en ben nu een Snippets Library aan het maken. Het probleem is dat de code van de snippets die je erin zet natuurlijk niet in een varchar past, dus ik heb een 'text' van dat veld gemaakt. Nu is het probleem alleen dat die niet als een String terugkomt, maar als een bytearray.
Bijvoorbeeld dit:
byte[] Snip_ScriptBytes = reader[2];
geeft terug:
Cannot implicitly convert type 'object' to 'byte[]'. An explicit conversion exists (are you missing a cast?)
reader[2] is dus een object. Het rare is dat als ik dit doe:
MessageBox.Show(Convert.ToString(reader[2].GetType));
returned dat:
System.Byte[]

Wat moet ik nou doen om de waarden uit de array te krijgen (om er uiteindelijk een mooie string van te maken ;) )?

16 antwoorden

Gesponsorde links
Offline Fenrir - 01/04/2005 17:27
Avatar van Fenrir PHP expert Het is een array, dus je kunt het met foreach ophalen.

Bijvoorbeeld zo:

  1. foreach(Byte bla in Snip_ScriptBytes)
  2. {
  3. MessageBox.Show((string)bla);
  4. }
Offline VonDutch - 01/04/2005 17:28
Avatar van VonDutch PHP interesse Nee... Het probleem is dat ik die array dus niet in die array krijg ;) Lastig uit te leggen... maar lees nog maar eens goed.
Offline Fenrir - 01/04/2005 17:30
Avatar van Fenrir PHP expert ahh, ik zie het al:

Citaat:
[..code..]



dat klop niet: je gebruikt .GetType: dat retourneert het type.

Misschien zo:

  1. MessageBox.Show((string)reader[2]);
Offline VonDutch - 01/04/2005 17:35 (laatste wijziging 01/04/2005 17:37)
Avatar van VonDutch PHP interesse nee... goed lezen. Dat van dat GetType is alleen maar om te controleren welk type het is.
Wat het moet doen is dat de bytearray uit die mysqlreader naar de Snip_ScriptBytes bytearray wordt 'gekopieerd'. Eigenlijk dus hetzelfde als
string Snip_Title = reader[0].ToString();
Er zit dus wel een method in die reader voor ToString() maar niet om het geschikt te maken om in die bytearray te zetten.

MessageBox.Show((string)reader[2]) retourneert ook gewoon System.Byte[] hoor... als dat (string)reader[2] tenminste hetzelfde is als Convert.ToString(reader[2])
;)
Offline Fenrir - 01/04/2005 17:40 (laatste wijziging 01/04/2005 17:42)
Avatar van Fenrir PHP expert O, nu begrijp ik het.
Probeer zo eens:

  1. byte[] Snip_ScriptBytes = (byte[])reader[2];


Citaat:
MessageBox.Show((string)reader[2]) retourneert ook gewoon System.Byte[] hoor...


Nee, dat retourneert een string...
Ik dacht dat je het resultaat gewoon in een string wilde.
Offline VonDutch - 01/04/2005 17:43
Avatar van VonDutch PHP interesse aight die werkt ;) Ik verwacht dat in die array gewoon de bytewaarden van die letters staan, dus om het nu om te toveren is niet heel moeilijk meer ;) alvast bedankt! misschien post ik t script wel als hij af is ;)
Offline Fenrir - 01/04/2005 17:45 (laatste wijziging 01/04/2005 17:45)
Avatar van Fenrir PHP expert OK, maar
Citaat:
Ik verwacht dat in die array gewoon de bytewaarden van die letters staan, dus om het nu om te toveren is niet heel moeilijk meer ;)

Dat omtoveren kan ook in 1 keer, als je bijv een string nodig hebt:

string Snip_ScriptString = (string)reader[2];
Offline VonDutch - 01/04/2005 17:48
Avatar van VonDutch PHP interesse
  1. sql = "SELECT title, language, script FROM " + SubmitTable + " WHERE title = '" + Convert.ToString(lstSnippets.Items[lstSnippets.SelectedIndices[0]].Text) + "'";
  2.  
  3. cmd = new MySQLCommand(sql, con);
  4. reader = cmd.ExecuteReaderEx();
  5.  
  6. while (reader.Read())
  7. {
  8. string Snip_Title = reader[0].ToString();
  9. string Snip_Lang = reader[1].ToString();
  10. byte[] Snip_ScriptBytes = (byte[])reader[2];
  11.  
  12. string Snip_ScriptString = "";
  13. for (int i = 0; i <= Snip_ScriptBytes.GetUpperBound(0); i++)
  14. {
  15. Snip_ScriptString += Convert.ToChar(Snip_ScriptBytes[i]);
  16. }



werkt perfect 
Offline Fenrir - 01/04/2005 17:49
Avatar van Fenrir PHP expert ehh, maar dat is dan wel omslachtig, als het ook in 1 regel kan 
Offline VonDutch - 01/04/2005 17:54 (laatste wijziging 01/04/2005 17:55)
Avatar van VonDutch PHP interesse boeie dit is vetter 
en btw, dat had ik eerst en werkte niet...
Offline Fenrir - 01/04/2005 18:02
Avatar van Fenrir PHP expert lol, maar dit werkt toch wel:

string Snip_ScriptString = (string)reader[2];

? of niet?
Offline VonDutch - 01/04/2005 18:07
Avatar van VonDutch PHP interesse als dat het zelfde is als string Snip_ScriptString = Convert.ToString(reader[2]); dan niet nee 
Offline Ontani - 01/04/2005 18:51
Avatar van Ontani Gouden medailleGouden medailleGouden medailleGouden medaille

-1
k ken nu nix van C# maar wel van vb

probeer eens
string Snip_ScriptString = ctype(reader[2].GetType, string);
Offline VonDutch - 01/04/2005 18:52
Avatar van VonDutch PHP interesse hij doet het al hoor 
ik dacht ook dat C# makkelijk zou zijn als je vb kent, maar C# is veel strenger met variable types....
Offline Fenrir - 01/04/2005 19:10
Avatar van Fenrir PHP expert Vreemd, dat zou toch gewoon moeten werken...krijg je errors?
Offline VonDutch - 01/04/2005 19:48
Avatar van VonDutch PHP interesse
Citaat:
als dat het zelfde is als string Snip_ScriptString = Convert.ToString(reader[2]); dan niet nee

Ik heb geen zin om het nu weer terug te zetten, het werkt nu gewoon, dus ik ben blij ;)
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.211s