Just nu i M3-nätverket
Gå till innehåll

Databaskörningen stannar vid läsning av tabell. Varför?


Coffer

Rekommendera Poster

Hej!

 

Jag sitter med ett problem som jag till synes inte får någon rätsida på. Jag skall skriva till en databas men kan inte ansluta till den. Hela körningen stannar och tuggar på ett och samma ställe - den kommer liksom inte vidare. I min programkod (VB.NET) har jag med hjälp av breakpoints kunnat konstatera att felet ligger på rad 3. Programmet kommer alltså inte förbi rad 3. Kan någon se varför det blir fel???

 

[Avkortad kod för läsbarhetens skull]
1.  objCmd.CommandText = "LOCK TABLE forum WRITE;"
2.  objCmd.ExecuteNonQuery()
3.  objCmd.CommandText = "SELECT @myLeft := lft FROM forum WHERE idforum = '1';UPDATE forum SET rgt = rgt + 2 WHERE rgt > @myLeft;UPDATE forum SET lft = lft + 2 WHERE lft > @myLeft;"
4.  objCmd.ExecuteNonQuery()
[Avkortad kod för läsbarhetens skull]

 

UPPDATERING:

Jag har efter mängder av felsökande skrivit om koden lite. Den ser nu ut som följer:

 

Try
               If objConn.State <> ConnectionState.Open Then
                   objConn.Open()
               End If

               Dim strProfile As String = String.Empty

               If Page.User.Identity.IsAuthenticated = True Then
                   strProfile = GetStubs.GetUserGuid(Page.User.Identity.Name)
               Else
                   strProfile = String.Empty
               End If

               Dim objCmd As New MySqlCommand("SELECT @myLeft := lft FROM forum WHERE idforum = '1';UPDATE forum SET rgt = rgt + 2 WHERE rgt > @myLeft;UPDATE forum SET lft = lft + 2 WHERE lft > @myLeft;INSERT INTO forum (idforum, idarticles, idprofiles, editor, body, postedat, ipaddress, status, rating, lft, rgt) VALUES(?idforum,?idarticles,?idprofiles,?editor,?body,?postedat,?ipaddress,?status,?rating,@myLeft + 1,@myLeft + 2);", objConn)
               objCmd.Parameters.Add("?idforum", MySqlDbType.VarChar, 36).Value = Guid.NewGuid.ToString()
               objCmd.Parameters.Add("?idarticles", MySqlDbType.VarChar, 36).Value = Request.QueryString("id")
               objCmd.Parameters.Add("?idprofiles", MySqlDbType.VarChar, 36).Value = strProfile.ToString()
               objCmd.Parameters.Add("?editor", MySqlDbType.VarChar, 255).Value = txtName.Text
               objCmd.Parameters.Add("?body", MySqlDbType.Text).Value = txtBody.Text
               objCmd.Parameters.Add("?postedat", MySqlDbType.DateTime).Value = DateTime.Now.ToString()
               objCmd.Parameters.Add("?ipaddress", MySqlDbType.VarChar, 150).Value = HttpContext.Current.Request.ServerVariables("REMOTE_ADDR").ToString()
               objCmd.Parameters.Add("?status", MySqlDbType.VarChar, 255).Value = "Open"
               objCmd.Parameters.Add("?rating", MySqlDbType.Int32).Value = "0"
               objCmd.ExecuteNonQuery() 'HÄR STANNAR KODEN! VARFÖR!!!

               'If IsDoNotify(Request.QueryString("id")) = True Then
               'SendMessage(Request.QueryString("id"))
               'End If

               'PageBase.FlushMemory()

               Response.Redirect(CustomClasses.CustomTags.ResolveUrl("~/Article.aspx?id=" & Request.QueryString("id")))
           Catch ex As Exception
               Monitoring.Debugging.Bug(CustomClasses.CustomTags.FixParagraph(ex.ToString()))
           Finally
               If objConn.State <> ConnectionState.Closed Then
                   objConn.Close()
               End If
           End Try

 

Nu uppstår alltså felet i objCmd.ExecuteNonQuery. Sätter jag en breakpoint där stannar kompileringen när den kommer dit. Flyttar jag min breakpoint en rad nedåt kommer kompileringen aldrig fram dit. Vad är fel?? Jag sliter mitt korta hår för detta. (Kan jag för övrigt placera en lock-unlock table i inledningen och slutet av frågeuttrycket, eller hinner tabellen stängas innan körningen då?

 

Tacksam för snabbt svar.

Med vänlig hälsning

 

Kristofer Gisslén

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...