1. #1
    Dreetn's Avatar
    Registered
    03/11/04
    Location
    Oostduinkerke
    Posts
    5,173
    iTrader
    3 (100%)
    Mentioned
    0 Post(s)
    Reputation
    0/42

    Invalid operation (C#)

    Hallo

    Ik werk in de ASP.net omgeving en probeer via C# te zoeken in ee MSSQL database. Telkens ik dit probeer krijg ik een "System.InvalidOperationException"-exceptie. Ik krijg dezelfde exceptie bij elke zoekopdracht, daarom post ik maar de code van 1 ervan.

    Code voor het openen van de connectie:

    Code:
    SqlConnection myConnection = new SqlConnection("user id=xxx;" +
                                           "password=xxx;server=xxx;" +
                                           "Trusted_Connection=yes;" +
                                           "database=xxx; " +
                                           "connection timeout=30");
    
                
    
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                try
                {
                    myConnection.Open();
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.ToString());
                }
            }
    Code voor de zoek functie:

    Code:
    protected void Zoek_IMDB_Click(object sender, EventArgs e)
        {
            //[IMDB] = @IMDB
            try
            {
                SqlDataReader lezer = null;
    
                SqlCommand zoekopdracht = new SqlCommand("SELECT * FROM [DVD_collectie] WHERE [IMDB] = " + IMDB_zoeken.Text, myConnection);
    
                lezer = zoekopdracht.ExecuteReader();
                while (lezer.Read())
                {
                    tekstbox.Text += (lezer["Titel"].ToString());
                    tekstbox.Text += Environment.NewLine;
                    tekstbox.Text += (lezer["Jaar"].ToString());
                    tekstbox.Text += Environment.NewLine;
                    tekstbox.Text += (lezer["Genre"].ToString());
                    tekstbox.Text += Environment.NewLine;
                    tekstbox.Text += (lezer["IMDB"].ToString());
                    tekstbox.Text += Environment.NewLine;
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
            }
        }
    Ik heb ongeveer dezelfde stukken code voor elke kolom (wel enkele met 'LIKE').
    Mijn andere kolommen zijn Titel, Genre en jaar.


    Dank bij voorbaat
    no votes  

  2. #2
    Drone's Avatar
    Registered
    28/05/03
    Location
    bmb
    Posts
    744
    iTrader
    0
    Mentioned
    0 Post(s)
    Reputation
    15/15
    Is er geen innerException? Die geeft meestal wat meer informatie. Is het ook niet raar dat je de connectie al open doet in de pageload?
    no votes  

  3. #3
    Parnakra's Avatar
    Registered
    15/04/04
    Location
    Izegem
    Posts
    6,095
    iTrader
    1 (100%)
    Mentioned
    0 Post(s)
    no votes  

  4. #4

    Registered
    08/11/03
    Location
    Antwerpen
    Posts
    1,726
    iTrader
    0
    Mentioned
    0 Post(s)
    Reputation
    2/2
    Quote Originally Posted by Dreetn View Post
    This quote is hidden because you are ignoring this member. Show
    Hallo

    Ik werk in de ASP.net omgeving en probeer via C# te zoeken in ee MSSQL database. Telkens ik dit probeer krijg ik een "System.InvalidOperationException"-exceptie. Ik krijg dezelfde exceptie bij elke zoekopdracht, daarom post ik maar de code van 1 ervan.
    Een InvalidOperationException krijg je wanneer je een operatie op een object uitvoert, maar het object niet in de juiste state is om de operatie te kunnen uitvoeren (bijv niet alle nodige gegevens zijn opgegeven). In uw geval zal het zijn omdat de connectie naar je database niet open is.

    Je opent momenteel je connectie in je page load, enkel als het geen postback is (wat een vieze code trouwens). Maar je wil gebruik maken van de connectie wanneer je op de zoek-knop clickt, wat natuurlijk een postback triggered en er dus voor zorgt dat je connectie niet geopend wordt.

    Wat je kan doen om je code op te kuisen:
    - steek de code om je database te queryen in een aparte class (data access class).
    - gebruik using statements om IDisposable objects (je connection) te disposen wanneer je ze niet meer nodig hebt.
    - Console.WriteLine in een webapp?
    no votes  

  5. #5
    Dreetn's Avatar
    Registered
    03/11/04
    Location
    Oostduinkerke
    Posts
    5,173
    iTrader
    3 (100%)
    Mentioned
    0 Post(s)
    Reputation
    0/42
    Bedankt voor uw uitleg.


    Die Console.WriteLine is enkel om de website lokaal te testen hoor.
    no votes  

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  

Log in

Log in