Avatar billede brian-johansen Nybegynder
05. november 2005 - 12:19 Der er 9 kommentarer og
1 løsning

problem med insert til database

Hej,

Jeg er løbet ind i et lidt underligt problem.

Når jeg prøver at indsætte noget i min database(hvilket er lykkes 100 gange før) virker det fint. Men hvis jeg opdatere siden, så afvikler den min metode igen... dvs. at hvis jeg trykker F5 4 gange, ja så for jeg indholdet fra mine tekstbokse ind i min database 4 gange.

Er der nogen der har en ide til hvad der forgår ?

Det har virket før men efter jeg er gået over til asp.net 2.0, så virker det ikke længere. Jeg ved ikke om det har noget med sagen at gøre men det er i hvert fald lidt underligt synes jeg.

Mvh Brian

Metoden jeg bruger er sådan:

protected void Button1_Click(object src, EventArgs e )
{
{
string sql = "Insert into ol (navn, pris, beskrivelse) Values (@navn, @pris, @beskrivelse)";
OleDbCommand insertCommand = new OleDbCommand(sql, myConn);
insertCommand.Parameters.Add("@navn", OleDbType.VarChar).Value = Navn.Text;
insertCommand.Parameters.Add("@pris", OleDbType.VarChar).Value = Pris.Text;
insertCommand.Parameters.Add("@beskrivelse", OleDbType.VarChar).Value = Beskrivelse.Text;

      try
          {
                   
              myConn.Open();
              insertCommand.ExecuteNonQuery();
               
            }
            catch
            {
              Response.Write("Der er sket en fejl");
              }
              finally
              {
              myConn.Close();
             
              }

            }
}
Avatar billede dgivoni Nybegynder
05. november 2005 - 12:59 #1
Hvordan opdaterer du siden?
Hvis det er i browseren med f5 f.eks. så repeterer den jo den sidste request til serveren, og hvis det sidste var at du klikkede på knappen der indsætter i databasen, så er det jo det der sker igen. Hvis du vil undgå det, kan du enten lave siden om, så den "expirer" med det samme, dvs. at man ikke kan opdatere den, eller også kunne du lave et tjek inden du indsætter i databasen om samme kombination af navn, pris og beskrivelse eksisterer allerede, og kun indsætte, hvis den ikke gør.
Avatar billede brian-johansen Nybegynder
05. november 2005 - 13:53 #2
jamen hvis du prøver at indsætte nyt i mine tekstbokse trykker tilføj, så ligger den ikke det  ind som der står i tekstboksene det som jeg skrev gangen før.

Håber du forstår hvad jeg mener

mvh Brian
Avatar billede dgivoni Nybegynder
05. november 2005 - 14:04 #3
det lyder godt nok underligt... det har jeg ikke lige en forklaring på :(
Avatar billede snepnet Nybegynder
06. november 2005 - 10:45 #4
kan du ikke lægge lidt mere kode herud?
mvh
Avatar billede brian-johansen Nybegynder
06. november 2005 - 22:24 #5
Hej,
Det kan jeg godt men det bliver først i morgen.

Men der er bare ikke så meget mere kode, andet end det der er på selve aspx siden


mvh Brian
Avatar billede snepnet Nybegynder
07. november 2005 - 22:36 #6
den vil jeg gerne se .... især dit page_directive.
mvh
Avatar billede brian-johansen Nybegynder
08. november 2005 - 10:49 #7
Koden til ol.aspx:

<%@ Page language="c#" Inherits="cafecms.ol" CodeFile="ol.aspx.cs" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >

<html>
  <head>
    <title>ol</title>
    <meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
    <meta name="CODE_LANGUAGE" Content="C#">
    <meta name=vs_defaultClientScript content="JavaScript">
    <meta name=vs_targetSchema content="http://schemas.microsoft.com/intellisense/ie5">
  </head>
  <body>
   
    <form id="Form1" method="post" runat="server">
    <table width="100%" height="120" align="center" bgcolor="#6699cc" border="0">
                <TR>
                    <td align="center"><font size="8" color="#ffffff" face="verdana"><b> Administrations område</b></font></td>
                </TR>
            </table>
        <br />
        <br />
        &nbsp;
        <table style="width: 680px">
            <tr valign="top">
                <td style="width: 187px; height: 21px">
        <table style="width: 447px">
            <tr>
                <td style="width: 73px">
                    Navn</td>
                <td style="width: 46px">
                    <asp:TextBox ID="Navn" runat="server"></asp:TextBox></td>
            </tr>
            <tr>
                <td style="width: 73px">
                    Pris</td>
                <td style="width: 46px">
                    <asp:TextBox ID="Pris" runat="server" ></asp:TextBox></td>
            </tr>
            <tr>
                <td style="width: 73px; height: 173px" valign="top">
                    Beskrivelse</td>
                <td style="width: 46px; height: 173px" valign="top">
                    <asp:TextBox ID="Beskrivelse" runat="server" Height="169px" TextMode="MultiLine"></asp:TextBox></td>
            </tr>
        </table>
        <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Gem" /></td>
                <td style="width: 644px; height: 21px" valign="top">
                    <asp:DataGrid ID="DataGrid1" runat="server" CellPadding="4" ForeColor="#333333" GridLines="Horizontal" AutoGenerateColumns="false"
                        Width="349px">
                        <FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
                        <EditItemStyle BackColor="#999999" />
                        <SelectedItemStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" />
                        <PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" />
                        <AlternatingItemStyle BackColor="White" ForeColor="#284775" />
                        <ItemStyle BackColor="#F7F6F3" ForeColor="#333333" />
                        <HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
                        <Columns>
                    <asp:BoundColumn DataField="navn" HeaderText="Overskrift"></asp:BoundColumn>
                    <asp:BoundColumn DataField="pris" HeaderText="Indhold"></asp:BoundColumn>
                    <asp:BoundColumn DataField="beskrivelse" HeaderText="Indhold"></asp:BoundColumn>
                    <asp:HyperLinkColumn Text="Ret" Target="Top" DataNavigateUrlField="id" DataNavigateUrlFormatString="olDetaljer.aspx?id={0}"
                        HeaderText="Ret">
                        <FooterStyle ForeColor="#FFCC66"></FooterStyle>
                    </asp:HyperLinkColumn>
                </Columns>
                <PagerStyle HorizontalAlign="Left" ForeColor="#000066" BackColor="White" Mode="NumericPages"></PagerStyle>
                       
                       
                    </asp:DataGrid></td>
            </tr>
        </table>
        &nbsp;&nbsp;
        <br />
    </form>
   
  </body>
</html>

Koden til ol.aspx.cs:

using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Data.OleDb;

namespace cafecms
{
    /// <summary>
    /// Summary description for ol.
    /// </summary>
    public partial class ol : System.Web.UI.Page
    {
        OleDbConnection myConn;
        OleDbDataAdapter adapter;
        protected void Page_Load(object sender, System.EventArgs e)
        {
            string strDSN = @"Provider=Microsoft.Jet.OLEDB.4.0 ;Data Source=";
            strDSN += Server.MapPath("data\\cafe.mdb");
            myConn = new OleDbConnection(strDSN);
            string sql = "select * From ol";
            adapter = new OleDbDataAdapter(sql, myConn);
            DataSet ds = new DataSet();
            adapter.Fill(ds, "ol");
            DataGrid1.DataSource = ds;
            DataGrid1.DataBind();
           
           

        }

        #region Web Form Designer generated code
        override protected void OnInit(EventArgs e)
        {
            //
            // CODEGEN: This call is required by the ASP.NET Web Form Designer.
            //
            InitializeComponent();
            base.OnInit(e);
        }
       
        /// <summary>
        /// Required method for Designer support - do not modify
        /// the contents of this method with the code editor.
        /// </summary>
        private void InitializeComponent()
        {   
        }
        #endregion
       
        protected void Button1_Click(object src, EventArgs e )
        {
            {
                string sql = "Insert into ol (navn, pris, beskrivelse) Values (@navn, @pris, @beskrivelse)";
                OleDbCommand insertCommand = new OleDbCommand(sql, myConn);
                insertCommand.Parameters.Add("@navn", OleDbType.VarChar).Value = Navn.Text;
                insertCommand.Parameters.Add("@pris", OleDbType.VarChar).Value = Pris.Text;
                insertCommand.Parameters.Add("@beskrivelse", OleDbType.VarChar).Value = Beskrivelse.Text;

                try
                {
                   
                    myConn.Open();
                    insertCommand.ExecuteNonQuery();
                 
                }
                catch
                {
                    Response.Write("Der er sket en fejl");
                }
                finally
                {
                    myConn.Close();
                         
                }

            }
        }
}
}
Avatar billede brian-johansen Nybegynder
09. november 2005 - 11:16 #8
Hej Fandt ud af det selv.

Tak for hjælpen
Avatar billede dgivoni Nybegynder
09. november 2005 - 11:41 #9
Kunne du ikke beskrive løsningen også, så andre der løber ind i det samme problem kunne få hjælp på den måde?
Avatar billede brian-johansen Nybegynder
14. november 2005 - 10:20 #10
Nej, for jeg ved faktisk hvad det var der gjorde at det virkede, men det gjorde det bare lige pludselig.... meget mærkeligt
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