Avatar billede webhelpers Praktikant
08. december 2005 - 14:32 Der er 17 kommentarer og
1 løsning

sql select

Hej

Jeg kan sgu ikke hente værdierne i en simpel select SQl, er der en som kan hjælpe?

---------------------------------

OdbcCommand SelectFolder = new OdbcCommand("SELECT Sender_FolderID, Receiver_FolderID FROM message WHERE ID = " + InsertMessageID + "", MyConnection);

OdbcDataReader read; // klassen OdbcDataReader defineres til
read = SelectFolder.ExecuteReader(); 
               
Sender_FolderID = Convert.ToInt64(read["Sender_FolderID"].ToString());

Receiver_FolderID = Convert.ToInt64(read["Receiver_FolderID"].ToString());

-----------------------------

Som du kan se i ovenstående vil jeg bare gerne dykke ned i tabellen "message" og hente de to felter Sender_FolderID og Receiver_FolderID ind i et par variable som jeg kan lave noget check på......plain and simple, hvis det var ASP :-D

God jul
Avatar billede dr_chaos Nybegynder
08. december 2005 - 14:34 #1
hvad fejl får du ?
Avatar billede -mundi- Nybegynder
08. december 2005 - 14:40 #2
if(read.Read()){
  int Sender_FolderID = read.GetInt32(read.getOrdinal("Sender_FolderID"))
}
Avatar billede webhelpers Praktikant
08. december 2005 - 14:40 #3
No data exists for the row/column.

- i denne: Sender_FolderID = Convert.ToInt64(read["Sender_FolderID"].ToString());
Avatar billede -mundi- Nybegynder
08. december 2005 - 14:40 #4
Eller GetInt64 hvis det er sådan en du hiver ud
Avatar billede webhelpers Praktikant
08. december 2005 - 14:44 #5
hej -mundi-

så får jeg følgende fejl:
Compiler Error Message: CS0117: 'System.Data.Odbc.OdbcDataReader' does not contain a definition for 'getOrdinal'
Avatar billede -mundi- Nybegynder
08. december 2005 - 14:45 #6
Stort G , min fejl :-)
Avatar billede senil Nybegynder
08. december 2005 - 14:45 #7
prøv:
OdbcCommand SelectFolder = new OdbcCommand("SELECT Sender_FolderID, Receiver_FolderID FROM message WHERE (ID = " + InsertMessageID + ")", MyConnection);

Har sat () efter WHERE
Avatar billede -mundi- Nybegynder
08. december 2005 - 14:46 #8
Det er fordi numsi ikke kaldte Read() på DataReaderen at der ikke er nogen data, og ikke fordi Sql'en fejler
Avatar billede webhelpers Praktikant
08. december 2005 - 14:48 #9
Excellent! tak :-)

God jul, og tak for alle inputs!
Avatar billede -mundi- Nybegynder
08. december 2005 - 14:49 #10
selv tak
Avatar billede webhelpers Praktikant
08. december 2005 - 14:57 #11
OdbcCommand SelectFolder = new OdbcCommand("SELECT Sender_FolderID, Receiver_FolderID FROM message WHERE ID = " + InsertMessageID + "", MyConnection);
OdbcDataReader read;

read = SelectFolder.ExecuteReader(); 
               
if(read.Read()){
  int tempSender_FolderID = read.GetInt16(read.GetOrdinal("Sender_FolderID"));
  int tempReceiver_FolderID = read.GetInt16(read.GetOrdinal("Receiver_FolderID"));

  if (tempSender_FolderID == -2)
  {
    tempSender_FolderID = 0;
  }
  else if (tempReceiver_FolderID == -2)
  {
    tempReceiver_FolderID = 0;
  }



Den fejler ikke nu, men når jeg så prøver at indsætte værdien af tempReceiver_FolderID i en anden SQL:

if (GetOriginalSenderID == InsertSenderID)
{
  OdbcCommand UpdateMessage = new OdbcCommand("UPDATE message SET Sender_read = 1, Receiver_FolderID = " + tempReceiver_FolderID + ", Receiver_read = 0, Lastupdate = '" + Date.ToString("yyyyMMddHHmmss") + "' WHERE ID = " + InsertMessageID + " LIMIT 1", MyConnection);
 
UpdateMessage.ExecuteNonQuery();
}

- Får jeg fejlen:
CS0103: The name 'tempReceiver_FolderID' does not exist in the class or namespace 'ASP.message_reply_aspx'


Hvis det ikke er simpelt, kan jeg godt oprette et nyt spørgsmål med point, hvis det er....
Avatar billede -mundi- Nybegynder
08. december 2005 - 15:02 #12
Måske fordi du declarerer dine variable inde i If statementet
int tempSender_FolderID = 0;
int tempReceiver_FolderID = 0;
if(read.Read()){
  tempSender_FolderID = read.GetInt16(read.GetOrdinal("Sender_FolderID"));
  tempReceiver_FolderID = read.GetInt16(read.GetOrdinal("Receiver_FolderID"));

  if (tempSender_FolderID == -2)
  {
    tempSender_FolderID = 0;
  }
  else if (tempReceiver_FolderID == -2)
  {
    tempReceiver_FolderID = 0;
  }
}
Avatar billede webhelpers Praktikant
08. december 2005 - 15:06 #13
så får jeg:
CS0165: Use of unassigned local variable 'tempReceiver_FolderID'
Avatar billede webhelpers Praktikant
08. december 2005 - 15:09 #14
Hm, jeg havde sat variablene som:
int tempSender_FolderID ;
int tempReceiver_FolderID;

Men da jeg ændrede til:
int tempSender_FolderID = 0;
int tempReceiver_FolderID= 0;

Får jeg en fejl længere nede der siger at:
There is already an open DataReader associated with this Connection which must be closed first.

Hvordan lukker man den datareader jeg har lavet?
Avatar billede -mundi- Nybegynder
08. december 2005 - 15:10 #15
read.Close()
Avatar billede webhelpers Praktikant
08. december 2005 - 15:12 #16
Excellent...he he, nu skal jeg nok lade dig være :-)

Tak for hjælpen -mundi-

jeg har opretter asap et nyt spørgsmål, som du kan svare på, så du kan få lidt flere point som tak for hjælpen
Avatar billede -mundi- Nybegynder
08. december 2005 - 15:14 #17
Det behøves ikke
Avatar billede webhelpers Praktikant
08. december 2005 - 15:18 #18
det er gjort :-)

Den hedder til -mundi-
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester