webForumDet fria alternativet

Underliga variabelvärden

.NET

1 svar · 164 visningar · startad av trexter

Medlem sedan mars 20021 889 inlägg
Frågan#1

Jag undrar varför string cat får "Microsoft.Data.Odbc.OdbcDataReader" som värde och inte värdet ur databasen som det är tänk.

IDbCommand commuser = ConnectionFactory.makeCommand(conn, "select Xnamn from forumcats where id ="+catid+"");
conn.CreateCommand();
conn.Open();
string cat = Convert.ToString(commuser.ExecuteReader());
conn.Close();

Sedan blir tradtitelvariabelns värde en nolla (0) när det i databsen är ett strängvärde.

			IDbCommand commValues = ConnectionFactory.makeCommand(conn, "select Xcatid, Xnamn from forumthreads where id ="+threadid+"");
			conn.CreateCommand();
			conn.Open();			
			IDataReader myReader = ConnectionFactory.makeDataReader(commValues);
			while (myReader.Read())
			{
				catid = myReader.GetInt32(0).ToString();
				tradtitel = myReader.GetInt32(1).ToString();
			}
			conn.Close();

:)

Medlem sedan juni 20019 024 inlägg
#2

1. .ExecuteReader() retunerar objekt som OdbcDataReader och konverterar du detta till en sträng får du helt enkelt bara namnet på klassen. Det du ska göra är att hämta datan från DataReadern - men först efter att du instantiserat (heter det så?) den:

OdbcDataReader myReader = myCommand.ExecuteReader();
string cat = myReader.GetString(0);

2. Felet är att du hämtar ett strängvärde som tal (GetInt32) som du sedan konverterar till en sträng (ToString). Och eftersom det inte finns något tal i en sträng blir det 0.

myReader.GetInt32(1).ToString();

Det du bör göra är att hämta ett strängvärde direkt:

myReader.GetString(1);

Kolla i ODBC.NET-manualen, där står allt sådant plus några exempel.

267 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
128 ms — deklarationer (db)
0 ms — hämta statistik (cache)
135 ms — hämta tråd, inlägg och bilagor (db)
129 ms — ändringar (db)