Avatar billede tdafoobar Nybegynder
22. maj 2006 - 23:44 Der er 6 kommentarer og
1 løsning

Param quries, replace param flere gange ?

Hejsa

Hvordan kan jeg optimere denne metode så mit param bliver ersattet hver gang ? Lige nu ser det ud til at den kun indsætter param værdien een gang, og ikke ersatter I næste loop.

Man kunne bruge Replace() istedet, men hvis der er en smartere metode så vil jeg gerne kende den :)

--- kode ---
  void DeleteChecked(object sender,EventArgs e)
  {
    if(Page.IsPostBack)
    {
      try
      {
        string SQL = "DELETE FROM guestbook WHERE id=@id";
        System.Data.OleDb.OleDbConnection link = new System.Data.OleDb.OleDbConnection();
        link.ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data source=C:\IIS\guestbook.mdb";
        OleDbCommand cmd = new OleDbCommand(SQL,link);
        cmd.Connection.Open();
        foreach(RepeaterItem item in msglist.Items)
        {
          HtmlInputCheckBox cb = item.FindControl("chkChoice") as HtmlInputCheckBox;
          if(cb.Checked)
          {
            cmd.Parameters.Add(new OleDbParameter("@id",cb.Value));
            cmd.ExecuteNonQuery();
          }
        }
        cmd.Connection.Close();
      }
      catch(Exception ex)
      {
        error.Text = ex.ToString();
      }
      finally
      {
        Response.Redirect("admin.aspx");
      }
    }
  }
Avatar billede snepnet Nybegynder
22. maj 2006 - 23:54 #1
Prøv sådan her:

  void DeleteChecked(object sender,EventArgs e)
  {
    if(Page.IsPostBack)
    {
      try
      {
        string SQL = "DELETE FROM guestbook WHERE id=@id";
        System.Data.OleDb.OleDbConnection link = new System.Data.OleDb.OleDbConnection();
        link.ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data source=C:\IIS\guestbook.mdb";
        OleDbCommand cmd = new OleDbCommand(SQL,link);
        OleDbParameter parameter = new OleDbParameter("@id", OleDbType.Integer);
        cmd.Connection.Open();
        foreach(RepeaterItem item in msglist.Items)
        {
          HtmlInputCheckBox cb = item.FindControl("chkChoice") as HtmlInputCheckBox;
          if(cb.Checked)
          {
            parameter.Value = int.Parse(cb.Value);
            cmd.ExecuteNonQuery();
          }
        }
        cmd.Connection.Close();
      }
      catch(Exception ex)
      {
        error.Text = ex.ToString();
      }
      finally
      {
        Response.Redirect("admin.aspx");
      }
    }
  }

Mvh
Avatar billede tdafoobar Nybegynder
22. maj 2006 - 23:59 #2
Der manglede lige cmd.Parameters.Add(parameter);, men ellers virker det perfekt :)

Forresten finally bliver eksekveret selvom der er fanget en exceptions, er der noget jeg kan/bør gøre istedet ? Hvis den redirecter og der er fejl ser jeg dem ikke ;)
Avatar billede snepnet Nybegynder
23. maj 2006 - 01:05 #3
Ups ja - lille misser :o)
Finally er garanteret altid at køre... Er det en anden eller den samme side du redirecter til?
Mvh
Avatar billede tdafoobar Nybegynder
23. maj 2006 - 01:12 #4
Samme side, for at fjerne postback. Virker meget godt , flyttede det var ned efter try{}catch.
Avatar billede snepnet Nybegynder
23. maj 2006 - 01:15 #5
Ok
Avatar billede tdafoobar Nybegynder
23. maj 2006 - 01:23 #6
husk at lægge et svar, for points.
Avatar billede snepnet Nybegynder
23. maj 2006 - 01:23 #7
Roger ... kommer her :o)
Mvh
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester