webForumDet fria alternativet

DataReader

6 svar · 284 visningar · startad av DavidB

DavidBMedlem sedan jan. 20001 372 inlägg
#1

om jag har en DataReader som endast hämtar ett Id-nummer från Databasen, hur gör jag då för att lägga detta i en Int?

sen undrar jag även en sak till, hur gör man för att lägga in det som DataReadern hämtar i ett DataSet?

icaaqMedlem sedan okt. 20005 273 inlägg
#2
[red]
int i = Convert.ToInt16(DataReader["FetchedInt"])
eller
int i = (int)DataReader["FetchedInt"]
[/red]

Jag kan ju själv passa på att fråga vad som är skillnaden mellan dessa två och vilken utav dem som är att föredra :q

Det med datasetet vet jag inte nu ;)

mvh icaaq

PMedlem sedan jan. 20012 204 inlägg
#3

Jag har hört att man bara ska använda datareadern inga dataset och datagrids...

DavidBMedlem sedan jan. 20001 372 inlägg
#4

okej, tackar men när jag testar ovanstående så får jag något fel, det står att nånting är OutOfRange.
har då fäljande kod:

return (int)objDataReader["Id"];

antog att FetchedInt skulle vara namnet på fältet man hämtade id:t från men jag kanske e helt ute och cyklar?

sen har jag även en fråga till som rör DataReader.

när jag kör fäljande kod:

Response.Write(GetDataReader("select * from users").Read());

protected OdbcDataReader GetDataReader(String strSQL){
	try{
		OdbcCommand SqlCommand = CreateSqlCommand(strSQL);
		objConn.Open();
		OdbcDataReader objDataReader = SqlCommand.ExecuteReader();
		
		return objDataReader;
	} finally{
		objConn.Close();
	}
}

så får jag fel att det inte går att läsa när DataReadern är stängd.
attempt to Read when reader is closed.

hur gör jag för att lösa detta?

renholmMedlem sedan apr. 20012 266 inlägg
#5

Tips: Om du bara ska hämta ett id nummer och du använder Stored Procedures så är det bäst att skicka id med en parameters.

GladhMedlem sedan maj 20012 812 inlägg
#6

Du kan inte skicka en reader på det sættet.

Før nær du væl stænger din connection så stængs din reader också.

Jag vet det suger... jag vill också kunna gøra så :(

Det finns dock en væg runt problemet (eller 2 vægar).

- Gør om readern till en array och skicka arrayn.
Eller
- Lægg på CommandBehavior.CloseConnection nær du kør execute på din command.

oCommand.ExecuteReader(System.Data.CommandBehavior.CloseConnection);

och strunta i att stænga din connection. Nær sedan din reader stængs så stængs din connection.

Det finns nackdelar med båda, men dessa sætt ær nog de bæsta sætten att løsa problemet på.

- M

erkaMedlem sedan dec. 19996 522 inlägg
#7

Jag har löst det genom att ha två funktioner som skapar en reader och sedan returnerar den och stänger connection, en som returnerar en matris med flera dimensioner, samt en som returnerar ett datatable. Fungerar perfekt

144 ms totalt · 3 externa anrop · v20260731065814-full.0e50b1ef
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
141 ms — hämta tråd, inlägg och bilagor (db)