Avatar billede mega-hawk Nybegynder
06. oktober 2010 - 17:37 Der er 8 kommentarer og
1 løsning

gemme og hente fra database?

Jeg har brug for 2 forhåbenlige simple funktioner.

Den ene skal hente data fra en database og den anden gemme.

En teori:

funtion gem_data()

if noget then
gem tekst1.txt i kolonne 1 og text2.txt i kolone 2
else
gør noget andet?
end funtion

funtion get data()
dim i as integer
for i = 0 to end of database
hent data fra databasen
next i
end funtion

Ved ikke om det er så simpelt.
Vil bare gerne prøve at arbejde lidt med at gemme data til en databse istedet for en fil.

Det er ikke et program som skal blive til noget, men bare for at lære det så noget simpel med 2 textBoxe eller sådan noget

Og gerne noget hvor man måske bygger en knap på til næste og forrige.
Det vel bare noget med at læse et id nr i databasen.

Men da jeg er ny til det her så smid gerne lige en kommentar med til koden undervejs hvad den laver osv...
Avatar billede arne_v Ekspert
06. oktober 2010 - 17:44 #1
Hvilken database bruger du?

Hvis SQLServer skal du kigge på klasserne SqlConnection, SqlCommand og SqlDataReader.
Avatar billede arne_v Ekspert
06. oktober 2010 - 17:46 #2
Et eksempel:

Imports System
Imports System.Threading
Imports System.Data
Imports System.Data.SqlClient

Class MainClass
    Public Shared Sub Main(ByVal args As String())
        Dim con As SqlConnection = New SqlConnection("server=ARNEPC3;Integrated Security=SSPI;database=Test")
        con.Open
        Dim cre As SqlCommand = New SqlCommand("CREATE TABLE dtest (i INTEGER PRIMARY KEY, d DATETIME)", con)
        cre.ExecuteNonQuery
        Dim ins As SqlCommand = New SqlCommand("INSERT INTO dtest VALUES (@i, @d)", con)
        ins.Parameters.Add("@i", SqlDbType.Int)
        ins.Parameters.Add("@d", SqlDbType.DateTime)
        Dim i As Integer
        For i = 0 To 9
            ins.Parameters("@i").Value = i
            ins.Parameters("@d").Value = DateTime.Now
            ins.ExecuteNonQuery
            Thread.Sleep(1000)
        Next
        Console.WriteLine("All rows :")
        Dim sel As SqlCommand = New SqlCommand("SELECT * FROM dtest", con)
        Dim rdr As SqlDataReader = sel.ExecuteReader
        While rdr.Read
            Dim iv As Integer = CType(rdr(0), Integer)
            Dim dv As DateTime = CType(rdr(1), DateTime)
            Console.WriteLine(iv & " " & dv)
        End While
        rdr.Close
        Console.WriteLine("Rows last 5 seconds since " + DateTime.Now + " :")
        Dim sel2 As SqlCommand = New SqlCommand("SELECT * FROM dtest WHERE d > @d", con)
        sel2.Parameters.Add("@d", SqlDbType.DateTime)
        sel2.Parameters("@d").Value = DateTime.Now.AddSeconds(-5)
        Dim rdr2 As SqlDataReader = sel2.ExecuteReader
        While rdr2.Read
            Dim iv As Integer = CType(rdr2(0), Integer)
            Dim dv As DateTime = CType(rdr2(1), DateTime)
            Console.WriteLine(iv & " " & dv)
        End While
        rdr2.Close
        Dim drp As SqlCommand = New SqlCommand("DROP TABLE dtest", con)
        drp.ExecuteNonQuery
        con.Close
    End Sub
End Class
Avatar billede mega-hawk Nybegynder
06. oktober 2010 - 19:13 #3
Jeg har ingen ide om hvilen database jeg bruger ;o)

Har bare set vb har mulighed for at indsætte en database.

Jeg får ikke tid til at kigge på det før tidligst i morgen så bare smid et svar ;o)

Dine koder plejer jo at virke så vil ikke tvivle på dig denne gang ;o)
Avatar billede arne_v Ekspert
06. oktober 2010 - 19:29 #4
Koden er testet så den virker.

Men det er jo lige det med at forstå hvad de enkelte dele gør.

Databaser i .NET er et halvstort emne, som du nok skal regne med at bruge lidt tid på at sætte dig ind i.
Avatar billede arne_v Ekspert
06. oktober 2010 - 19:30 #5
Og et svar.
Avatar billede mega-hawk Nybegynder
06. oktober 2010 - 19:48 #6
Sagt som det er... Jeg forstår ikke noget af koden overhovedet he he, men det er lige meget før eller siden lærer jeg det vel he he.. Nu har jeg ihvertfald noget at vende tilbage til som en slags opslagsværk...
Avatar billede arne_v Ekspert
06. oktober 2010 - 20:03 #7
Det man skal forstå er at der er flere muligheder for at arbejde med database i .NET:

* Connection, Command og DataReader
* Connection, DataAdpter og DataSet
* typed dataset
* LINQ to SQL
* Entity Framework (og LINQ to EF)
* NHibernate
Avatar billede arne_v Ekspert
06. oktober 2010 - 20:04 #8
Et eksempel med DataSet og MS Access database:

Imports System
Imports System.Data
Imports System.Data.OleDb
Imports System.Drawing
Imports System.Windows.Forms

Namespace DefaultNamespace
    Public Class MainForm
        Inherits Form
        Private dg As DataGrid
        Private save As Button
        Private con As OleDbConnection
        Private da As OleDbDataAdapter
        Private cb As OleDbCommandBuilder
        Private ds As DataSet

        Public Shared Sub Main
            Dim fMainForm As New MainForm
            fMainForm.ShowDialog()
        End Sub

        Public Sub New()
            MyBase.New
            Me.InitializeComponent
        End Sub

        Private Sub InitializeComponent()
            con = New OleDbConnection ("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\Database\MSAccess\Test.mdb;UserId=admin;Password=")
            con.Open
            da = New OleDbDataAdapter("SELECT * FROM T1", con)
            cb = New OleDbCommandBuilder(da)
            da.UpdateCommand = cb.GetUpdateCommand
            ds = New DataSet
            da.Fill(ds, "T1")
            dg = New DataGrid
            save = New Button
            SuspendLayout
            dg.Location = New Point(50, 50)
            dg.Size = New Size(300, 200)
            dg.SetDataBinding(ds, "T1")
            save.Location = New Point (50, 300)
            save.Size = New Size (100, 25)
            save.Text = "Save"
            AddHandler save.Click, AddressOf SaveClick
            ClientSize = New Size(400, 400)
            Controls.Add(dg)
            Controls.Add(save)
            Text = "Main Form"
            ResumeLayout(false)
        End Sub
       
        Sub SaveClick(ByVal sender As Object, ByVal e As EventArgs)
            da.Update(ds, "T1")
            ds.AcceptChanges
            dg.Refresh
        End Sub
    End Class
End Namespace
Avatar billede mega-hawk Nybegynder
06. oktober 2010 - 20:15 #9
Jeg prøver at arbejde for at lære lidt på en kontakt bog eller hvad det hedder. Altså du kan indtaste navn,adresse,tlf og så skal man kunne søge i navnene og man skal kunne indtaste navne og hente navne.

Er det der det aller korteste man kan skrive koden?

Er der ikke mulighed for at lave en som er så super kort og lille at jeg forstår den ;o)
en kolonne, 1 tekstbox og så 2 knapper. Gem og hent?
For hvis det stadig ser for uoverskuelig ud for mig er jeg bange for jeg må starte et andet sted med at lære at lave programmer.

Mener bare at et lille program med få udfordringer i også er med til at jeg lærer noget.

Jeg er meget modstander af at man af at kopiere og sætte kode ind jeg ikke forstår. Så jeg prøver at starte med at lave meget simple små programmer og så prøve om jeg kan udbygge dem, men som du måske har lagt mærke til det er det ikke let ;o)

MEN MEN MEN jeg giver ikke op (endnu)
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
Kurser inden for grundlæggende programmering

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