Avatar billede montymus Nybegynder
22. oktober 2005 - 09:20 Der er 21 kommentarer og
1 løsning

oprette forb og indsætte data i access db

Jeg har denne kode:
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Data.OleDb;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;

namespace News
{
    /// <summary>
    /// Summary description for WebForm1.
    /// </summary>
    public class WebForm1 : System.Web.UI.Page
    {
        protected System.Web.UI.WebControls.TextBox tbHeadLine;
        protected System.Web.UI.WebControls.TextBox tbStory;
        protected System.Web.UI.WebControls.TextBox tbPostedOn;
        protected System.Web.UI.WebControls.Button bnCreate;
        protected System.Web.UI.WebControls.Label Label1;
        protected System.Web.UI.WebControls.Label Label2;
        protected System.Web.UI.WebControls.Button bnClear;
   
        private void Page_Load(object sender, System.EventArgs e)
        {
            // Put user code to initialize the page here
            string sConnection = "Provider=Microsoft.Jet.OLEDB.4.0;" +"Data Source=K:/Visual studio projects/News (2)/News.mdb";
            OleDbConnection dbConn = new OleDbConnection(sConnection);
           
            Label1.Text = dbConn.State.ToString();
           
        }

        #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()
        {   
            this.bnCreate.Click += new System.EventHandler(this.bnCreate_Click);
            this.bnClear.Click += new System.EventHandler(this.bnClear_Click);
            this.Load += new System.EventHandler(this.Page_Load);

        }
        #endregion

        private void bnCreate_Click(object sender, System.EventArgs e)
        {
            string sConnection = "Provider=Microsoft.Jet.OLEDB.4.0;" +"Data Source=K:/Visual studio projects/News (2)/News.mdb";
            OleDbConnection dbConn = new OleDbConnection(sConnection);
            dbConn.Open();
            int  result;
            string  sql, HeadLine, Story, CreatedOn;
            HeadLine = tbHeadLine.Text;
            Story = tbStory.Text;
            CreatedOn = tbPostedOn.Text;
            sql = String.Format("INSERT INTO News(HeadLine, Story, CreatedOn) Values('{0}','{1}','{2}');",  HeadLine, Story, CreatedOn);
            OleDbCommand  dbCmd;
            dbCmd = new OleDbCommand();
            dbCmd.CommandText = sql;
       
            dbCmd.Connection = dbConn;
            result = dbCmd.ExecuteNonQuery();
           
 
            Label2.Text = result.ToString();
            dbConn.Close();

       
        }

        private void bnClear_Click(object sender, System.EventArgs e)
        {
       
        }
    }
}

...

Den kompiler fint men når jeg trykker på opret knappen sker dette:

Serverfejl i programmet '/XstremeWeb/CMSBeta2/News'.
--------------------------------------------------------------------------------

"" kan ikke bruges, fordi filen allerede er i brug.
Beskrivelse: Der opstod en ikke-afviklet undtagelse under udførelse af den aktuelle webanmodning. Se staksporingen for at få yderligere oplysninger om fejlen, og hvor den kom fra i koden.

Detaljer om undtagelse: System.Data.OleDb.OleDbException: "" kan ikke bruges, fordi filen allerede er i brug.

Kildefejl:


Linje 63:             string sConnection = "Provider=Microsoft.Jet.OLEDB.4.0;" +"Data Source=K:/Visual studio projects/News (2)/News.mdb";
Linje 64:             OleDbConnection dbConn = new OleDbConnection(sConnection);
Linje 65:             dbConn.Open();
Linje 66:             int  result;
Linje 67:             string  sql, HeadLine, Story, CreatedOn;


Kildefil: c:\inetpub\wwwroot\xstremeweb\cmsbeta2\news\webform1.aspx.cs    Linje: 65

Staksporing:


[OleDbException (0x80004005): "" kan ikke bruges, fordi filen allerede er i brug.]
  System.Data.OleDb.OleDbConnection.ProcessResults(Int32 hr)
  System.Data.OleDb.OleDbConnection.InitializeProvider()
  System.Data.OleDb.OleDbConnection.Open()
  News.WebForm1.bnCreate_Click(Object sender, EventArgs e) in c:\inetpub\wwwroot\xstremeweb\cmsbeta2\news\webform1.aspx.cs:65
  System.Web.UI.WebControls.Button.OnClick(EventArgs e)
  System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument)
  System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument)
  System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData)
  System.Web.UI.Page.ProcessRequestMain()




--------------------------------------------------------------------------------
Versionsoplysninger: Microsoft .NET Framework version:1.1.4322.2032; ASP.NET version:1.1.4322.2032

Nogen der kan fortælle hvad det er jeg har gjort galt??
Avatar billede dr_chaos Nybegynder
22. oktober 2005 - 09:23 #1
prøv at fjerne:
string sConnection = "Provider=Microsoft.Jet.OLEDB.4.0;" +"Data Source=K:/Visual studio projects/News (2)/News.mdb";
            OleDbConnection dbConn = new OleDbConnection(sConnection);

fra
private void bnCreate_Click(object sender, System.EventArgs e)
Avatar billede montymus Nybegynder
22. oktober 2005 - 09:26 #2
Så får jeg kompiler fejl, da dbConn bliver brugt længere nede i koden også
Avatar billede dr_chaos Nybegynder
22. oktober 2005 - 09:27 #3
så prøv at omdøbe den til
string sConnection1 = "Provider=Microsoft.Jet.OLEDB.4.0;" +"Data Source=K:/Visual studio projects/News (2)/News.mdb";
            OleDbConnection dbConn1 = new OleDbConnection(sConnection1);
Problemet er at du i pageload laver en connection og så vil du lave en ny connection med samme navn
Avatar billede dr_chaos Nybegynder
22. oktober 2005 - 09:31 #4
virker forbindelsen til databasen andre steder ?
Avatar billede montymus Nybegynder
22. oktober 2005 - 09:33 #5
den virker når jeg bare kører news.aspx  men når jeg trykker på create news virker den ikke mere
Avatar billede montymus Nybegynder
22. oktober 2005 - 09:34 #6
ved at omdøbe den får jeg samme fejl.. den siger den er i brug
Avatar billede dr_chaos Nybegynder
22. oktober 2005 - 09:36 #7
i page load efter du har hentet state prøv at lukke dbconn med
dbConn.Close();
eller
dbConn.Dispose();
Avatar billede dr_chaos Nybegynder
22. oktober 2005 - 09:37 #8
drop det med at omdøbe den.
Avatar billede dr_chaos Nybegynder
22. oktober 2005 - 09:38 #9
hvis det ikke virker kan du prøve at definerer dbconn som en private.
altså:
private string sConnection = "Provider=Microsoft.Jet.OLEDB.4.0;" +"Data Source=K:/Visual studio projects/News (2)/News.mdb";
private OleDbConnection dbConn = new OleDbConnection(sConnection);

og så slette de 2 linier fra page_load og bnCreate
Avatar billede montymus Nybegynder
22. oktober 2005 - 09:38 #10
Nu har jeg prøvet at gøre så det KUN er i page_load min dbConn skulle køre
Koden:

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

namespace News
{
    /// <summary>
    /// Summary description for WebForm1.
    /// </summary>
    public class WebForm1 : System.Web.UI.Page
    {
        protected System.Web.UI.WebControls.TextBox tbHeadLine;
        protected System.Web.UI.WebControls.TextBox tbStory;
        protected System.Web.UI.WebControls.TextBox tbPostedOn;
        protected System.Web.UI.WebControls.Button bnCreate;
        protected System.Web.UI.WebControls.Label Label1;
        protected System.Web.UI.WebControls.Label Label2;
        protected System.Web.UI.WebControls.Button bnClear;
   
        private void Page_Load(object sender, System.EventArgs e)
        {
            // Put user code to initialize the page here
            string sConnection = "Provider=Microsoft.Jet.OLEDB.4.0;" +"Data Source=K:/Visual studio projects/News (2)/News.mdb";
            OleDbConnection dbConn = new OleDbConnection(sConnection);
            dbConn.Open();
            Label1.Text = dbConn.State.ToString();
           
        }

        #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()
        {   
            this.bnCreate.Click += new System.EventHandler(this.bnCreate_Click);
            this.bnClear.Click += new System.EventHandler(this.bnClear_Click);
            this.Load += new System.EventHandler(this.Page_Load);

        }
        #endregion

        private void bnCreate_Click(object sender, System.EventArgs e)
        {
            //string sConnection1 = "Provider=Microsoft.Jet.OLEDB.4.0;" +"Data Source=K:/Visual studio projects/News (2)/News.mdb";
            //OleDbConnection dbConn = new OleDbConnection(sConnection1);
            //dbConn.Open();
            //int  result;
            //string  sql, HeadLine, Story, CreatedOn;
            //HeadLine = tbHeadLine.Text;
            //Story = tbStory.Text;
            //CreatedOn = tbPostedOn.Text;
            //sql = String.Format("INSERT INTO News(HeadLine, Story, CreatedOn) Values('{0}','{1}','{2}');",  HeadLine, Story, CreatedOn);
            //OleDbCommand  dbCmd;
            //dbCmd = new OleDbCommand();
            //dbCmd.CommandText = sql;
       
            //dbCmd.Connection = dbConn;
            //result = dbCmd.ExecuteNonQuery();
           
 
            //Label2.Text = result.ToString();
            //dbConn.Close();

       
        }

        private void bnClear_Click(object sender, System.EventArgs e)
        {
       
        }
    }
}

Fejlen:

Serverfejl i programmet '/XstremeWeb/CMSBeta2/News'.
--------------------------------------------------------------------------------

"" kan ikke bruges, fordi filen allerede er i brug.
Beskrivelse: Der opstod en ikke-afviklet undtagelse under udførelse af den aktuelle webanmodning. Se staksporingen for at få yderligere oplysninger om fejlen, og hvor den kom fra i koden.

Detaljer om undtagelse: System.Data.OleDb.OleDbException: "" kan ikke bruges, fordi filen allerede er i brug.

Kildefejl:


Linje 31:             string sConnection = "Provider=Microsoft.Jet.OLEDB.4.0;" +"Data Source=K:/Visual studio projects/News (2)/News.mdb";
Linje 32:             OleDbConnection dbConn = new OleDbConnection(sConnection);
Linje 33:             dbConn.Open();
Linje 34:             Label1.Text = dbConn.State.ToString();
Linje 35:            


Kildefil: c:\inetpub\wwwroot\xstremeweb\cmsbeta2\news\webform1.aspx.cs    Linje: 33

Staksporing:


[OleDbException (0x80004005): "" kan ikke bruges, fordi filen allerede er i brug.]
  System.Data.OleDb.OleDbConnection.ProcessResults(Int32 hr)
  System.Data.OleDb.OleDbConnection.InitializeProvider()
  System.Data.OleDb.OleDbConnection.Open()
  News.WebForm1.Page_Load(Object sender, EventArgs e) in c:\inetpub\wwwroot\xstremeweb\cmsbeta2\news\webform1.aspx.cs:33
  System.Web.UI.Control.OnLoad(EventArgs e)
  System.Web.UI.Control.LoadRecursive()
  System.Web.UI.Page.ProcessRequestMain()




--------------------------------------------------------------------------------
Versionsoplysninger: Microsoft .NET Framework version:1.1.4322.2032; ASP.NET version
Avatar billede dr_chaos Nybegynder
22. oktober 2005 - 09:42 #11
sørger du for at lukke forbindelsen på dine andre sider ?
Avatar billede dr_chaos Nybegynder
22. oktober 2005 - 09:44 #12
prøv med dbconn.Close() efter
            Label1.Text = dbConn.State.ToString();
Avatar billede dr_chaos Nybegynder
22. oktober 2005 - 09:45 #13
der er et eller andet sted hvor forbindelsen til databasen formodentlig ikke er lukket korrekt.
Eller også er det fordi at forbindelsen forsøges åbnet igen i page load hvis du har lavet et post back.
Avatar billede montymus Nybegynder
22. oktober 2005 - 09:46 #14
jeg har kun den kode du kan se.. og så min mdb fil..  jeg får samme fejl når jeg smider dbConn.Close(); ind
Avatar billede montymus Nybegynder
22. oktober 2005 - 09:47 #15
jeg forsøgte at fjerne al koden fra Page_load og kun ha den i min knap og den giver fejlen når jeg så vil poste mine data ind i min db
Avatar billede dr_chaos Nybegynder
22. oktober 2005 - 09:49 #16
har du access åbnet men du afvikler din kode ?
Avatar billede montymus Nybegynder
22. oktober 2005 - 09:50 #17
ja.. må jeg ikke det?
Avatar billede montymus Nybegynder
22. oktober 2005 - 09:52 #18
jeg kommer tilbage om et par timer... skal lige i byen har jeg fået af vide ;)
Avatar billede dr_chaos Nybegynder
22. oktober 2005 - 09:52 #19
nope det skaber problemer prøv at lukke det.
Avatar billede dr_chaos Nybegynder
22. oktober 2005 - 09:52 #20
hehe bare iorden
Avatar billede dr_chaos Nybegynder
22. oktober 2005 - 09:57 #21
prøv med denne kode:
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Data.OleDb;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;

namespace News
{
    /// <summary>
    /// Summary description for WebForm1.
    /// </summary>
    public class WebForm1 : System.Web.UI.Page
    {
        protected System.Web.UI.WebControls.TextBox tbHeadLine;
        protected System.Web.UI.WebControls.TextBox tbStory;
        protected System.Web.UI.WebControls.TextBox tbPostedOn;
        protected System.Web.UI.WebControls.Button bnCreate;
        protected System.Web.UI.WebControls.Label Label1;
        protected System.Web.UI.WebControls.Label Label2;
        protected System.Web.UI.WebControls.Button bnClear;
      private string sConnection = "Provider=Microsoft.Jet.OLEDB.4.0;" +"Data Source=K:/Visual studio projects/News     (2)/News.mdb";
    private OleDbConnection dbConn = new OleDbConnection(sConnection);
 
        private void Page_Load(object sender, System.EventArgs e)
        {
            // Put user code to initialize the page here
       
            Label1.Text = dbConn.State.ToString();
         
        }

        #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()
        { 
            this.bnCreate.Click += new System.EventHandler(this.bnCreate_Click);
            this.bnClear.Click += new System.EventHandler(this.bnClear_Click);
            this.Load += new System.EventHandler(this.Page_Load);

        }
        #endregion

        private void bnCreate_Click(object sender, System.EventArgs e)
        {
            dbConn.Open();
            int  result;
            string  sql, HeadLine, Story, CreatedOn;
            HeadLine = tbHeadLine.Text;
            Story = tbStory.Text;
            CreatedOn = tbPostedOn.Text;
            sql = String.Format("INSERT INTO News(HeadLine, Story, CreatedOn) Values('{0}','{1}','{2}');",  HeadLine, Story, CreatedOn);
            OleDbCommand  dbCmd;
            dbCmd = new OleDbCommand();
            dbCmd.CommandText = sql;
     
            dbCmd.Connection = dbConn;
            result = dbCmd.ExecuteNonQuery();
         

            Label2.Text = result.ToString();
            dbConn.Close();

     
        }

        private void bnClear_Click(object sender, System.EventArgs e)
        {
     
        }
    }
}
Avatar billede montymus Nybegynder
30. oktober 2005 - 16:16 #22
har droppet det lige nu.. vender tilbage når jeg får tid til dette projekt
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