Avatar billede gyldenbrand Nybegynder
15. december 2007 - 14:51 Der er 14 kommentarer og
1 løsning

Insert data fra .net platform

Hej, jeg jeg har siddet og bakset med et database i .net platformen.. nu har jeg fået det til at virke så jeg kan læse fra min database og udskrive det på siden.

Jeg har nu lavet en textbox1 og en button1, jeg vil gerne kunne skrive fx. i textboxt1 "palle" og trykke på button1, derefter skulle den kunne skrive til databasen og laven en ny bruger der hedder palle.

i min database har jeg en tabel der hedder 'profil' og i den har jeg en post; 'pnavn' som er profilnavn.

Her er min foreløbe kode på 'user.aspx' filen:

<%@ Import Namespace="System.Data.OleDb" %>
<html>
<head>
</head>
<body>
    <form runat="server">
        <p>
            <asp:Repeater id="customers" runat="server">
                <HeaderTemplate>
                    <table border="1" width="100%">
                        <tr>
                            <th>
                                Companyname</th>
                            <th>
                                Contactname</th>
                            <th>
                                Address</th>
                            <th>
                                City</th>
                        </tr>
                </HeaderTemplate>
                <ItemTemplate>
                    <tr>
                        <td>
                            <%#Container.DataItem("pnavn")%></td>
                        <td>
                            <%#Container.DataItem("pnavn")%></td>
                        <td>
                            <%#Container.DataItem("pnavn")%></td>
                        <td>
                            <%#Container.DataItem("pnavn")%></td>
                    </tr>
                </ItemTemplate>
                <FooterTemplate>
                    </table>
                </FooterTemplate>
            </asp:Repeater>
        </p>
        <p>
            <asp:TextBox id="TextBox1" runat="server"></asp:TextBox>
            <asp:Button id="Button1" runat="server" Text="opret brugernavn"></asp:Button>
        </p>
    </form>
</body>
</html>

Nogen der kan hjælpe mig til at kunne indsætte en ny bruger til databasen, et evt. forslag til hvordan koden skal se ud?
Avatar billede gyldenbrand Nybegynder
15. december 2007 - 14:53 #1
Hov, glemte lige at poste koden til db:

sub Page_Load
dim dbconn,sql,dbcomm,dbread
dbconn=New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;data source=" & server.mappath("db.mdb"))
dbconn.Open()
sql="SELECT * FROM profil"
dbcomm=New OleDbCommand(sql,dbconn)
dbread=dbcomm.ExecuteReader()
customers.DataSource=dbread
customers.DataBind()
dbread.Close()
dbconn.Close()
end sub
Avatar billede arne_v Ekspert
15. december 2007 - 16:04 #2
Spørgsmålet var nok bedre stillet i ASP.NET kategorien ...

Her er et simpelt eksmepel uden beskyttelse mod SQL injection eller andre finesser:

<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.SqlClient" %>
<script language="VB" runat="server">
    Private Sub LoadData
        Dim con As SqlConnection = New SqlConnection ("server=ARNEPC3;Integrated Security=SSPI;database=Test")
        con.Open
        Dim da As SqlDataAdapter = New SqlDataAdapter("SELECT * FROM T1", con)
        Dim ds As DataSet = New DataSet("T1")
        da.Fill(ds)
        MyDataList.DataSource = ds
        MyDataList.DataBind
        con.Close
    End Sub
    Private Sub Page_Load(src As Object, e As EventArgs)
        Call LoadData
    End Sub
    Private Sub Save_Click(src As Object, e As EventArgs)
        Dim con As SqlConnection = New SqlConnection("server=ARNEPC3;Integrated Security=SSPI;database=Test")
        con.Open
        Dim ins As SqlCommand = New SqlCommand("INSERT INTO T1 VALUES(" & f1.Text & ",'" & f2.Text & "')", con)
        ins.ExecuteNonQuery
        con.Close
        Call LoadData
    End Sub
</script>
<form runat=server>
Current data:
<table border>
    <tr>
    <th>F1</th>
    <th>F2</th>
    </tr>
    <asp:Repeater id="MyDataList" runat="server">
        <ItemTemplate>
            <tr>
            <td><%# DataBinder.Eval(Container.DataItem,"F1") %></td>
            <td><%# DataBinder.Eval(Container.DataItem,"F2") %></td>
            </tr>
        </ItemTemplate>
    </asp:Repeater>
</table>
Add row:
<br/>
F1: <asp:TextBox id="F1" runat="server"/>
<br/>
F2: <asp:TextBox id="F2" runat="server"/>
<br/>
<asp:Button id="SaveBtn" Text="Save" OnClick="Save_Click" runat="server"/>
</form>
Avatar billede arne_v Ekspert
15. december 2007 - 16:04 #3
(eksemplet bruger en SQLServer men teknikken er helt den samme med OleDb op mod en Access
database)
Avatar billede gyldenbrand Nybegynder
15. december 2007 - 20:13 #4
Hvordan laver jeg den om så den passer op mod en Acces?
Avatar billede gyldenbrand Nybegynder
15. december 2007 - 20:24 #5
Jeg har prøvet at oprette en database med navnet 'Test' med en tabel der hedder 'T1' og i tabellen har jeg 'ID' som autonummerering og 'F1' og 'F2'.

men den kan ikke finde databasen tror jeg..
Avatar billede arne_v Ekspert
15. december 2007 - 21:53 #6
Hvilken fejl får du ?

Man forbinder til Access som:

Dim con As OleDbConnection = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Databases\MSAccess\Test.mdb")
Avatar billede arne_v Ekspert
15. december 2007 - 21:53 #7
Hvis du har et id felt skal du rette SQL til:

        Dim ins As SqlCommand = New SqlCommand("INSERT INTO T1(F1,F2) VALUES(" & f1.Text & ",'" & f2.Text & "')", con)
Avatar billede gyldenbrand Nybegynder
16. december 2007 - 11:24 #8
Nu har jeg fået det til at virker :-) koden ser således ud:

Dim myConnection as OleDbConnection
    Dim strConnectionString as String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("db.mdb")
   
    Sub Page_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    If Not Page.IsPostBack Then
    GetConnection()
    End If
    End Sub
   
    Sub AddNewClient(ByVal sender As System.Object, ByVal e As System.EventArgs)
    GetConnection()
   
    Dim strSQL as String = "INSERT INTO client_profile(profilnavn,kodeord,kodeord_igen,kon,alder,hojde,vaegt,landsdel,postnummer,email) values('" & _
    profilnavn.Text & "','" & _
    kodeord.Text & "','" & _
    kodeord_igen.Text & "','" & _
    kon.Text &  "','"& _
    alder.Text & "','" & _
    hojde.Text & "','" & _
    vaegt.Text & "','"& _
    landsdel.Text & "','" & _
    postnummer.Text & "','"& _
    email.Text & "');"
   
    Dim myCommand as New OleDbCommand(strSQL, myConnection)
    Dim da As New OleDb.OleDbDataAdapter
    da.InsertCommand = myCommand
    da.InsertCommand.ExecuteNonQuery()
    ClearForm()
    End Sub
   
    Sub GetConnection()
    myConnection = New OleDbConnection(strConnectionString)
    myConnection.Open
    End Sub
   
    Sub ClearForm()
    profilnavn.Text = ""
    kodeord.Text = ""
    kodeord_igen.Text = ""
    kon.Text = ""
    alder.Text = ""
    hojde.Text = ""
    vaegt.Text = ""
    landsdel.Text = ""
    postnummer.Text = ""
    email.Text = ""
    End Sub


Jeg har dog lige nogle problemer, når jeg uploader siden 'opret_profil.aspx' til min surftown domæne, viser den ikke mine TextBox'e eller min Button1 til at afsende.
Jeg har .net i min pakke på webhotellet, og det virker fint når jeg tester den i Web Matrix på min pc... hvorfor kan jeg ikke se den online?

Og så har jeg lavet et billede, som jeg gerne vil have til at være knappen istedet for en button1.. sådan her ser koden ud for min button1: <asp:Button id="addclient" onclick="AddNewClient" runat="server" Text="Add Client"></asp:Button>

Hvordan gør jeg, så mit 'image1.jpg' kan fungere som knap?

På forhånd tak!
Avatar billede gyldenbrand Nybegynder
16. december 2007 - 18:49 #9
Ingen der ved, hvorfor den ikke kan vise siden ordentligt når jeg uploader den?
Avatar billede arne_v Ekspert
16. december 2007 - 19:16 #10
Hvordan ser koden ud nu ?

Får du en fejl meddelelse ?

Er der samme version af .NET på dit web hotel som du selv bruger ?
Avatar billede gyldenbrand Nybegynder
16. december 2007 - 22:51 #11
Koden ser ud som den jeg lige har postet. Der kommer ingen fejl på hverken Web matrix når jeg tester den der, eller på mit webhotel.. men når jeg kører den på webhotellet, så viser den hverken textboxe eller button's.. :(

Hvordan tjekker jeg om det er samme version på webhotellet?
Kan se at Web Matrix programmet er version: 2.0.50727.1433
Har det noget med det at gøre?
Avatar billede arne_v Ekspert
16. december 2007 - 23:26 #12
<%=Environment.Version%> i en .aspx

men selve asp:TextBox og asp:Button findes i alle ASP.NET versioner, så det er nok ikke det.
Avatar billede gyldenbrand Nybegynder
18. december 2007 - 23:10 #13
Når jeg må tosse lidt videre med dig, indtil jeg finder mit svar :)
Du har ihvertfald besvaret hovedspørgsmålet, thx.

Så bare lav en svar.
Avatar billede gyldenbrand Nybegynder
18. december 2007 - 23:10 #14
Ups, tosse lidt videre med DET, skulle der havde stået *g*
Avatar billede arne_v Ekspert
19. december 2007 - 01:15 #15
svar
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
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

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