Avatar billede n1 Nybegynder
05. december 2004 - 18:24 Der er 16 kommentarer og
1 løsning

skriv til database i ASP.NET

Er der ikke et sted hvor man kan hente et komplet eksempel på hvordan man skriver til en access database i ASP.NET, gerne meget simpelt, jeg kan nemmelig ikke få det til at virke!
Avatar billede snepnet Nybegynder
05. december 2004 - 18:55 #1
du kan få et eksempel her :

// aspx-filen (der er ikke rigtig noget :o)
<%@ Page language="c#" Codebehind="Default.aspx.cs" AutoEventWireup="false" Inherits="AccessProject._Default" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
    <HEAD>
        <title>Default</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">
        </form>
    </body>
</HTML>
Avatar billede snepnet Nybegynder
05. december 2004 - 18:55 #2
// code-behind :
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;
using System.Web.Mail;

namespace AccessProject
{
    public class _Default : System.Web.UI.Page
    {
        // connectionstring for formattering
        private string connectString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};User Id=admin;Password=;";
               
        // serverformen på siden
        protected HtmlForm Form1;
       
        private void Page_Load(object sender, System.EventArgs e)
        {
            Response.Write(this.Page.Request.Path.ToString());
           
            // forbindelsen oprettes (stien sættes vha MapPath(...))
            OleDbConnection connection = new OleDbConnection(String.Format(connectString, Server.MapPath("Data/TestDB.mdb")));
           
            // kommandoobjekt
            OleDbCommand command = new OleDbCommand("SELECT * FROM TblSomething", connection);
           
            // og en adapter
            OleDbDataAdapter adapter = new OleDbDataAdapter(command);
           
            try
            {
                // hent data til dataset
                DataSet ds = new DataSet("SomeDataSet");               
                adapter.Fill(ds);
               
                // lille opdatering - bare for at checke
                ds.Tables[0].Rows[0]["SomeString"] = "En ny tekst";
                OleDbCommandBuilder commandBuilder = new OleDbCommandBuilder(adapter);
                adapter.Update(ds);

                // og lidt til fremvisning her
                DataGrid someGrid = new DataGrid();
                someGrid.DataSource = ds;                   
                someGrid.DataBind();                                           
               
                // ind med griddet ...
                Form1.Controls.Add(someGrid);
            }
           
            // lidt fesent - men det er bare demo
            catch (Exception ex)
            {
                Response.Write(ex.Message);
            }
        }

        override protected void OnInit(EventArgs e)
        {
            InitializeComponent();
            base.OnInit(e);
        }
       
        private void InitializeComponent()
        {   
            this.Load += new System.EventHandler(this.Page_Load);
        }
    }
}
Avatar billede snepnet Nybegynder
05. december 2004 - 18:57 #3
I eksemplet ligger databasen så en i folder (data) under web-projektet, og hvis du skriver din email-adresse her - skal jeg sende dig basen (det er bare en rimelig ligegyldig testbase).

Mvh
Avatar billede snepnet Nybegynder
05. december 2004 - 18:58 #4
Eksemplet henter bare noget data - laver en lille opdatering (bare for demoens-skyld) - og viser det i et datagrid.

Mvh
Avatar billede n1 Nybegynder
05. december 2004 - 20:07 #5
min mail er torring@gmail.com
Avatar billede n1 Nybegynder
05. december 2004 - 20:09 #6
det jeg har prøvet er:

Dim strConn As String = "PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA SOURCE="& Server.Mappath("/asp.net/test/data/data2.mdb") & ";User Id=admin;Password=;"   
Dim objConn As New OleDbConnection(strConn)
Dim objCmd As New OleDbCommand("INSERT INTO billeder (image,dato,userid) VALUES ('test','test','test')", objConn)
objConn.Open()
objCmd.ExecuteNonQuery()
objConn.Close()

men jeg får bare en fejl!
Avatar billede agertoft Nybegynder
05. december 2004 - 21:00 #7
Du har checket, at både image, dato og userid er af typen text eller string i din database, ik? ;)
Avatar billede agertoft Nybegynder
05. december 2004 - 21:04 #8
Hvilken fejl får du?
Avatar billede n1 Nybegynder
05. december 2004 - 21:07 #9
det er først når den går igang med at skrive til databasen den kommer:


Server Error in '/' Application.
--------------------------------------------------------------------------------

Syntax error in INSERT INTO statement.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.Data.OleDb.OleDbException: Syntax error in INSERT INTO statement.

Source Error:


Line 85: Dim objCmd As New OleDbCommand("INSERT INTO billeder (image,dato,userid) VALUES ('test','test','test')", objConn)
Line 86: objConn.Open()
Line 87: objCmd.ExecuteNonQuery()
Line 88: objConn.Close()
Line 89:


Source File: c:\webs\talkactive\xxxxxxx\xxxxxxx.dk\asp.net\test\aspimage.aspx    Line: 87

Stack Trace:


[OleDbException (0x80040e14): Syntax error in INSERT INTO statement.]
  System.Data.OleDb.OleDbCommand.ExecuteCommandTextErrorHandling(Int32 hr) +41
  System.Data.OleDb.OleDbCommand.ExecuteCommandTextForSingleResult(tagDBPARAMS dbParams, Object& executeResult) +174
  System.Data.OleDb.OleDbCommand.ExecuteCommandText(Object& executeResult) +92
  System.Data.OleDb.OleDbCommand.ExecuteCommand(CommandBehavior behavior, Object& executeResult) +65
  System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior behavior, String method) +112
  System.Data.OleDb.OleDbCommand.ExecuteNonQuery() +67
  ASP.aspimage_aspx.PIC_CLICK(Object sender, EventArgs e) in c:\webs\talkactive\web17824\texi.video-video.dk\asp.net\test\aspimage.aspx:87
  System.Web.UI.WebControls.Button.OnClick(EventArgs e) +108
  System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +57
  System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +18
  System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +33
  System.Web.UI.Page.ProcessRequestMain() +1277




--------------------------------------------------------------------------------
Version Information: Microsoft .NET Framework Version:1.1.4322.573; ASP.NET Version:1.1.4322.573

der bliver også lavet en fil der hedder data.ldb som først forsvinder efter et stykke tid...
Avatar billede agertoft Nybegynder
05. december 2004 - 21:41 #10
Som den skriver er det en fejl i dit SQL statement. Normalt vil man gemme "image" som et image-id og dermed en int, "dato" som en date, og "userid" vil også være en int. Men i dit statement indsætter du tre strings. Prøv istedet med:

"INSERT INTO billeder (image,dato,userid) VALUES (1,2004-12-05,3)"

Hvordan ser den tabel ud, du prøver at indsætte i? Hvilke datatyper forventer den?
Avatar billede n1 Nybegynder
05. december 2004 - 21:44 #11
alle datatyperne er bare tekst, så det skulle være noget problem den det jeg har lavet...
Avatar billede snepnet Nybegynder
05. december 2004 - 22:26 #12
jeg får en fejl når jeg prøver at sende basen til dig som zip-fil.
nu har jeg prøvet med en _zip fil får at se om det hjælper :o)
(jeg smutter nu)
mvh
Avatar billede n1 Nybegynder
05. december 2004 - 22:52 #13
ok, nu fik jeg det delvist til at virke, nu kan den da skrive til databasen!
jeg skrev bare:
Dim objCmd As New OleDbCommand("INSERT INTO billeder ([image],[dato],[tekst],[userid]) VALUES ('test','test','test','test')", objConn)
Avatar billede n1 Nybegynder
07. december 2004 - 13:59 #14
Kan du ikke lige skrive som et svar, jeg har fundet ud af det...
Avatar billede snepnet Nybegynder
16. december 2004 - 17:44 #15
er det mig du vil have et svar fra ?
mvh
Avatar billede n1 Nybegynder
16. december 2004 - 17:46 #16
jep
Avatar billede snepnet Nybegynder
16. december 2004 - 18:13 #17
ok - godt du kunne bruge det :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