Toon posts:

[ASP.NET / C#] CommandText property has not been initialized

Pagina: 1
Acties:
  • 152 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
code:
1
2
3
4
5
6
7
8
9
10
11
12
SqlCommand zoekhuis = new SqlCommand("sp_zoek_alternatief", connection);
                zoekhuis.CommandType = CommandType.StoredProcedure;
                zoekhuis.CommandText = "sp_zoek_alternatief";
                
                zoekhuis.Parameters.Add("@begindatum", SqlDbType.DateTime).Value = Application["periodevan"];
                zoekhuis.Parameters.Add("@einddatum", SqlDbType.DateTime).Value = Application["periodetot"];
                zoekhuis.Parameters.Add("@huisid", SqlDbType.Int).Value = Application["alternatievenid"];
                
                connection.Open();
                SqlDataAdapter adapter = new SqlDataAdapter(zoekhuis);
                DataSet result = new DataSet();
                adapter.Fill(result);


Dit bovenstaande is mijn code waarop ik de volgende error krijg:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
ExecuteReader: CommandText property has not been initialized 
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.InvalidOperationException: ExecuteReader: CommandText property has not been initialized

Source Error: 


Line 34:       
Line 35:       DataSet dataset = new DataSet();
Line 36:       adapter.Fill(dataset);
Line 37:       command.ExecuteReader(System.Data.CommandBehavior.CloseConnection);
Line 38:       return dataset;


Ik begrijp niet wat ik fout doe, Ik zet toch gewoon de commandtext property?
Misschien domme vraag , maar ik ben nog niet zo lang bezig met ASP.NET en kon het verder nergens vinden

Please help..

  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 11:55

mulder

ik spuug op het trottoir

Denk dat je niet de goede constructor pakt,
je zou in jouw code gewoon
SqlCommand zoekhuis = new SqlCommand();
zoekhuis.Connection = connection;
kunnen doen

oogjes open, snaveltjes dicht


  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
offtopic:
Je moet de naam van je sp's nooit met sp laten beginnen. Het lijkt mischien logisch omdat het Stored Procedure is maar sp staat voor System Procedure. Alle sp's die met sp_ geprefixed zijn worden daarom ook anders behandeld dan andere ( Er wordt bijvoorbeeld altijd eerst in de Master DB gezocht naar de sp ).

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Verwijderd

Topicstarter
nee helaas dat is het niet, ik krijg nog steeds dezelfde error

Verwijderd

Topicstarter
rwb schreef op dinsdag 26 april 2005 @ 15:04:
offtopic:
Je moet de naam van je sp's nooit met sp laten beginnen. Het lijkt mischien logisch omdat het Stored Procedure is maar sp staat voor System Procedure. Alle sp's die met sp_ geprefixed zijn worden daarom ook anders behandeld dan andere ( Er wordt bijvoorbeeld altijd eerst in de Master DB gezocht naar de sp ).
Ok, tnx. dat ga ik veranderen, heb je ook een oplossing voor m'n probleem toevallig? :)

  • sig69
  • Registratie: Mei 2002
  • Laatst online: 11:38
code:
1
2
3
SqlCommand zoekhuis = new SqlCommand("sp_zoek_alternatief", connection);
zoekhuis.CommandType = CommandType.StoredProcedure;
zoekhuis.CommandText = "sp_zoek_alternatief";

De CommandText is al gezet in de aanroep van de constructor

code:
1
2
3
4
5
zoekhuis.Parameters.Add("@begindatum", SqlDbType.DateTime).Value = Application["periodevan"];
zoekhuis.Parameters.Add("@einddatum", SqlDbType.DateTime).Value = Application["periodetot"];
zoekhuis.Parameters.Add("@huisid", SqlDbType.Int).Value = Application["alternatievenid"];
                
connection.Open();

Niet nodig, een DataAdapter regelt dit zelf

code:
1
SqlDataAdapter adapter = new SqlDataAdapter(zoekhuis);

Waarom eerst een sqlcommand maken als je daarna toch een SqlDataAdapter gaat gebruiken? Een dataAdapter heeft ook een commandText / Connection constructor

Al met al zitten er nog wel wat haken en ogen aan...

Edit: + wat whoami zegt...
Edit2: + wat whoami daaronder zegt...

Lees je even in op het verschil tussen een DataAdapter en een DataReader

[ Voor 78% gewijzigd door sig69 op 26-04-2005 15:28 ]

Roomba E5 te koop


  • whoami
  • Registratie: December 2000
  • Laatst online: 15:52
Je hebt je selectcommand van je DataAdapter niet gezet.

https://fgheysels.github.io/


  • whoami
  • Registratie: December 2000
  • Laatst online: 15:52
Wat doet die lijn 37 daar trouwens ? (zie je foutmelding) ??

https://fgheysels.github.io/


Verwijderd

Topicstarter
Ok ik heb het nu zo:

code:
1
2
3
4
5
6
7
                SqlDataAdapter adapter = new SqlDataAdapter("sp_zoek_alternatief",connection);
                adapter.SelectCommand.CommandType = CommandType.StoredProcedure;
                adapter.SelectCommand.Parameters.Add("@begindatum", SqlDbType.DateTime).Value = Application["periodevan"];
                adapter.SelectCommand.Parameters.Add("@einddatum", SqlDbType.DateTime).Value = Application["periodetot"];
                adapter.SelectCommand.Parameters.Add("@huisid", SqlDbType.Int).Value = Application["alternatievenid"];
                DataSet result = new DataSet();
                adapter.Fill(result);


Maar ik krijg nog steeds dezelfde foutmelding.

Wat die

code:
1
Line 37:       command.ExecuteReader(System.Data.CommandBehavior.CloseConnection);


daar doet weet ik ook niet..

  • sig69
  • Registratie: Mei 2002
  • Laatst online: 11:38
Ik denk dat
code:
1
command.ExecuteReader(System.Data.CommandBehavior.CloseConnection);

Voortkomt uit het feit dat een DataAdapter onderhuids een DataReader gebruikt.
Wat er nu niet klopt zie ik ook even niet.

Roomba E5 te koop


  • pjvandesande
  • Registratie: Maart 2004
  • Laatst online: 01-05 19:09

pjvandesande

GC.Collect(head);

Verwijderd schreef op dinsdag 26 april 2005 @ 15:26:
Ok ik heb het nu zo:

code:
1
2
3
4
5
6
7
                SqlDataAdapter adapter = new SqlDataAdapter("sp_zoek_alternatief",connection);
                adapter.SelectCommand.CommandType = CommandType.StoredProcedure;
                adapter.SelectCommand.Parameters.Add("@begindatum", SqlDbType.DateTime).Value = Application["periodevan"];
                adapter.SelectCommand.Parameters.Add("@einddatum", SqlDbType.DateTime).Value = Application["periodetot"];
                adapter.SelectCommand.Parameters.Add("@huisid", SqlDbType.Int).Value = Application["alternatievenid"];
                DataSet result = new DataSet();
                adapter.Fill(result);


Maar ik krijg nog steeds dezelfde foutmelding.

Wat die

code:
1
Line 37:       command.ExecuteReader(System.Data.CommandBehavior.CloseConnection);


daar doet weet ik ook niet..
Waarom doe je command.ExecuteReader? Roep je dit nog steeds zelf aan? Want ik zie hem niet in de post staan.

Verwijderd

Topicstarter
nee die roep ik zelf nergens aan..

dit is mijn totale code, weet niet of je daar wat aan hebt.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
DataSet huisjesdata = new DataSet();
        private void Page_Load(object sender, System.EventArgs e)
        {
            DataSet huisjesdata = new DataSet();
            Connection c = new Connection();
              
            string query="";
          
            Response.Write(Application["alternatievenid"]);

            if (Application["alternatieven"] == "true")
            {
                                SqlConnection connection = new SqlConnection("Password=*****;Persist Security Info=True;User ID=*****;Initial Catalog=maison;Data Source=*****");
                SqlDataAdapter adapter = new SqlDataAdapter("sp_zoek_alternatief",connection);
                adapter.SelectCommand.CommandType = CommandType.StoredProcedure;
                adapter.SelectCommand.Parameters.Add("@begindatum", SqlDbType.DateTime).Value = Application["periodevan"];
                adapter.SelectCommand.Parameters.Add("@einddatum", SqlDbType.DateTime).Value = Application["periodetot"];
                adapter.SelectCommand.Parameters.Add("@huisid", SqlDbType.Int).Value = Application["alternatievenid"];
                DataSet result = new DataSet();
                adapter.Fill(result);
                Response.Write("Alternatieven:");
            }
            else
            {
                //weergave huizenoverzicht
                //query="select HUISID, OMSCHRIJVING, PLAATSID from HUIS where HUISID=2703";
                query="select HUISID, OMSCHRIJVING, PLAATSID from HUIS where AANTALPERSONENNORMAAL=8";
                Response.Write("Huisoverzicht:");
            }

            
             huisjesdata=c.ExecuteSQL(query);
              
                    foreach (DataTable table in huisjesdata.Tables)
                    {
                        foreach ( DataRow row in table.Rows )
                        {
                        // weergave plaatsnaam
                        DataSet plaats = new DataSet();
                        plaats = c.ExecuteSQL("select NAAM, PLAATSID from PLAATS where PLAATSID = " +row["PLAATSID"].ToString());
                        foreach ( DataTable tableplaats in plaats.Tables )
                        {
                            foreach (DataRow rowplaats in tableplaats.Rows )
                            {
                                Response.Write("<p>Plaats: " +rowplaats["NAAM"].ToString()+"</p>");
                            }
                        }
                        
                        // korte omschrinving weergeven
                        string omschrijvingkort=row["OMSCHRIJVING"].ToString().Substring(0,150);
                        Response.Write( "<p>Omschrijving : " + omschrijvingkort +"....<p>" );
                          
                        // weergave prijs in een tabel
                        int huisid= int.Parse(row["HUISID"].ToString() );
                        DataSet prijs = new DataSet();
                        prijs = c.ExecuteSQL("select min(VERKOOPPRIJS) as min_prijs from HUISKOSTEN where HUISID="+huisid);
                          
                        foreach (DataTable tableprijs in prijs.Tables)
                        {
                            foreach (DataRow rowprijs in tableprijs.Rows)
                            {
                            Response.Write("<p>Prijs vanaf "+rowprijs["min_prijs"]+"</p>");
                            }
                        }
                        Response.Write( "<p><a href='huisdetails.aspx?huisid="+huisid+"'>Huisdetails</a></p>");
                        Response.Write("<HR>");
                        }
                    }
                
                }

  • stp_4
  • Registratie: Maart 2003
  • Laatst online: 30-04 19:47
Misschien krijg je een iets specifiekere foutmelding als je een try catch om je adapter.Fill(result); zet?

stp - PSN ID: stp_4


  • sig69
  • Registratie: Mei 2002
  • Laatst online: 11:38
Als ik deze code zie vraag ik me serieus af of je weet wat je aan het doen bent.
Ik bedoel onder andere dit:
code:
1
2
3
4
DataSet huisjesdata = new DataSet();
        private void Page_Load(object sender, System.EventArgs e)
        {
            DataSet huisjesdata = new DataSet();

Verder kan ik je Connection class en de bijbehorende ExecuteSQL methode niet vinden. Ik vermoed dat je ExecuteSQL methode de veroorzaker is.

Roomba E5 te koop


  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 11:55

mulder

ik spuug op het trottoir

Of gewoon de connection openen.

oogjes open, snaveltjes dicht


Verwijderd

Topicstarter
tja er staat inderdaad nog een hoop overbodige troep in, ik weet het..

Maar wat heeft die ExecuteSQL er mee te maken? die heeft er toch niks mee te maken?

  • stp_4
  • Registratie: Maart 2003
  • Laatst online: 30-04 19:47
Data handelt de SqlDataAdapter zelf, zoals sig69 al zei.. Ik kan de Connection class ook niet vinden... gebruik je geen pseudocode ofzo? ( of het is een zelfgemaakte klasse )Met welke tool programmeer je?

[ Voor 6% gewijzigd door stp_4 op 26-04-2005 16:05 ]

stp - PSN ID: stp_4


  • sig69
  • Registratie: Mei 2002
  • Laatst online: 11:38
Dit:
code:
1
2
3
4
DataSet dataset = new DataSet();
adapter.Fill(dataset);
command.ExecuteReader(System.Data.CommandBehavior.CloseConnection);
return dataset;

Lijkt mij de inhoud van je ExecuteSql methode. Maar zolang je daar de code niet van post kan ik dat niet met 100% zekerheid zeggen.

Roomba E5 te koop


Verwijderd

Topicstarter
ik heb zelf een klasse Connection gemaakt met oa. de volgende methode:
code:
1
2
3
4
5
6
7
8
9
10
public DataSet ExecuteSQL(String SqlString)
    {
      SqlCommand command = new SqlCommand(SqlString, MakeConnection());
      SqlDataAdapter adapter = new SqlDataAdapter(command);
      
      DataSet dataset = new DataSet();
      adapter.Fill(dataset);
      command.ExecuteReader(System.Data.CommandBehavior.CloseConnection);
      return dataset;
    }

Programmeer met visual studio

  • sig69
  • Registratie: Mei 2002
  • Laatst online: 11:38
Verwijderd schreef op dinsdag 26 april 2005 @ 16:07:
ik heb zelf een klasse Connection gemaakt met oa. de volgende methode:

public DataSet ExecuteSQL(String SqlString)
{
SqlCommand command = new SqlCommand(SqlString, MakeConnection());
SqlDataAdapter adapter = new SqlDataAdapter(SqlString, MakeConnection());

DataSet dataset = new DataSet();
adapter.Fill(dataset);
command.ExecuteReader(System.Data.CommandBehavior.CloseConnection);
return dataset;
}

Programmeer met visual studio
Probeer het zo' s

Edit: als je in visual studio programmeert, waarom gebruik je dan niet netjes een code behind? Of loop er eens met je debugger doorheen.
Verder kan je ook nog kijken naar DataBinding. Heb je de asp.net quickstart doorgenomen?

[ Voor 19% gewijzigd door sig69 op 26-04-2005 16:20 ]

Roomba E5 te koop


Verwijderd

Topicstarter
Heb ik gedaan..

Krijg nog steeds dezelfde error alleen die ene regel staat er niet meer bij.. Dat was dus niet het probleem denk ik..

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
ExecuteReader: CommandText property has not been initialized 
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.InvalidOperationException: ExecuteReader: CommandText property has not been initialized

Source Error: 


Line 32:        SqlDataAdapter adapter = new SqlDataAdapter(SqlString, MakeConnection());
Line 33:        DataSet dataset = new DataSet();
Line 34:        adapter.Fill(dataset);
Line 35:        return dataset;
Line 36:     }

  • sig69
  • Registratie: Mei 2002
  • Laatst online: 11:38
Heeft "SqlString" wel een waarde? Er wordt nergens null de functie ingestuurd? Als je er met de debugger doorheen loopt los je dit zo op.

Roomba E5 te koop


  • whoami
  • Registratie: December 2000
  • Laatst online: 15:52
Brrr, sorry hoor, maar dit is nogal bagger code waar ik geen zin heb om in te zoeken.

Als ik dat zo zie, vraag ik me af waarom je in ASP.NET progged, en of je er zelf nog wel wijs gaat uit geraken binnen 2 maanden ofzo...

https://fgheysels.github.io/


Verwijderd

Topicstarter
Debuggen kan niet, ik werk op een webserver.

SqlString heeft wel een waarde.

maar laat maar zitten, het is idd kut..

  • sig69
  • Registratie: Mei 2002
  • Laatst online: 11:38
Verwijderd schreef op dinsdag 26 april 2005 @ 16:28:
Debuggen kan niet, ik werk op een webserver.
Kan wel hoor, ik doe de hele dag niet anders
....
maar laat maar zitten, het is idd kut..
Het is inderdaad kut, maar dat geeft niet, je moet ergens beginnen. :)
Als je nou eerst de quickstart eens leest, daar wordt al veel in duidelijk en dan leer je ook proggen op de .Net manier ipv .Net te "misbruiken" a la classic asp.

Succes ermee!

Roomba E5 te koop


Verwijderd

Topicstarter
ok, ik kijk nog wel verder.

bedankt iig..

  • stp_4
  • Registratie: Maart 2003
  • Laatst online: 30-04 19:47
Verwijderd schreef op dinsdag 26 april 2005 @ 16:28:
Debuggen kan niet, ik werk op een webserver.

SqlString heeft wel een waarde.

maar laat maar zitten, het is idd kut..
Laat je jezelf nou niet ontmoedigen. De code ziet er inderdaad niet zo fraai uit, maar iedereen moet een kans krijgen om het te leren. Bestudeer goed de quickstart, daar staat een hele hoop in. Het nadeel van dat je gelijk veel wilt kunnen ondanks dat je weinig ervaring hebt, is dat je code er op den duur zo uit gaat zien. Later kun je er zelf ook om lachen hoop ik ;) Maar begin altijd met eenvoudige onderdelen om zo meer en meer bekend te raken met ASP.NET en C#.

stp - PSN ID: stp_4


  • sig69
  • Registratie: Mei 2002
  • Laatst online: 11:38
stp_4 schreef op dinsdag 26 april 2005 @ 16:35:
[...]
...
Later kun je er zelf ook om lachen hoop ik ;)
offtopic:
Ik moet elke keer weer lachen als ik zooi van vroeger tegen kom...

Roomba E5 te koop


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 15:27

gorgi_19

Kruimeltjes zijn weer op :9

Verwijderd schreef op dinsdag 26 april 2005 @ 16:28:
Debuggen kan niet, ik werk op een webserver.

SqlString heeft wel een waarde.

maar laat maar zitten, het is idd kut..
:?

Dan kan je nog debuggen; desnoods gooi je traces er uit? Weliswaar is lokaal debuggen makkelijker; maar ook debuginformatie is wel voor elkaar te krijgen.

Digitaal onderwijsmateriaal, leermateriaal voor hbo

Pagina: 1