Avatar billede fun22 Nybegynder
10. maj 2008 - 14:25 Der er 18 kommentarer og
1 løsning

Oprette forbindelse til SQL

Hej

Hvordan opretter jeg forbindelse til min sql database fra VB.NET, og kører en sql command??

Min connection string ligger i min app.config..

Mvh
Jesper
Avatar billede arne_v Ekspert
10. maj 2008 - 15:16 #1
Henter connection string fra din app.config, laver en SqlConnection udfra den, laver en
SqlCommand med SQL sætning, kalder ExecuteReader/ExecuteNonQuery/ExecuteScalar på
den.
Avatar billede fun22 Nybegynder
10. maj 2008 - 23:18 #2
Kan du lave et lille eksempel? Kan nemlig ikke få det til at virke.. Har prøvet med samme måde som med asp.net...
Avatar billede arne_v Ekspert
11. maj 2008 - 02:58 #3
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <connectionStrings>
        <add name="ExpressTest"
            connectionString="Server=ARNEPC3\SQLEXPRESS;Integrated Security=SSPI;Database=Test"
            providerName="System.Data.SqlClient" />
    </connectionStrings>
</configuration>
Avatar billede arne_v Ekspert
11. maj 2008 - 02:59 #4
Imports System
Imports System.Data.SqlClient
Imports System.Configuration

Namespace E
    Public Class Program
        Public Shared Sub Main(args As String())
            Dim con As New SqlConnection(ConfigurationManager.ConnectionStrings("ExpressTest").ConnectionString)
            con.Open()
            Dim cmd As New SqlCommand("SELECT * FROM T1", con)
            Dim rdr As SqlDataReader = cmd.ExecuteReader()
            While rdr.Read()
                Console.WriteLine(rdr(0) & " " & rdr(1))
            End While
            rdr.Close()
            con.Close()
            Console.ReadKey()
        End Sub
    End Class
End Namespace
Avatar billede fun22 Nybegynder
11. maj 2008 - 09:56 #5
Den kommer og siger at ConfigurationManager ikke er "declared"..
Avatar billede fun22 Nybegynder
11. maj 2008 - 10:31 #6
Jeg har det til at se sådan her ud nu:

Dim strSQL As String = "INSERT INTO Projects (Title, StartingDate, EndDate, Employe, Costumer) VALUES (@Title, @StartingDate, @EndDate, @Employe, @Costumer)"

        Dim con As New SqlConnection(ConfigurationSettings.AppSettings("Conn"))
        con.Open()
        Dim cmd As New SqlCommand(strSQL, con)

        Dim paramID As SqlParameter
        paramID = New SqlParameter("@Title", SqlDbType.VarChar)
        paramID.Value = Title.Text
        cmd.Parameters.Add(paramID)

        Dim paramStartingDate As SqlParameter
        paramStartingDate = New SqlParameter("@StartingDate", SqlDbType.Date)
        paramStartingDate.Value = StartingDate.Text
        cmd.Parameters.Add(paramStartingDate)

        Dim paramEndDate As SqlParameter
        paramEndDate = New SqlParameter("@EndDate", SqlDbType.Date)
        paramEndDate.Value = EndingDate.Text
        cmd.Parameters.Add(paramEndDate)

        Dim paramEmploye As SqlParameter
        paramEmploye = New SqlParameter("@Employe", SqlDbType.VarChar)
        paramEmploye.Value = Employe.Text
        cmd.Parameters.Add(paramEmploye)

        Dim paramCostumer As SqlParameter
        paramCostumer = New SqlParameter("@Costumer", SqlDbType.Int)
        paramCostumer.Value = Costumer.SelectedValue
        cmd.Parameters.Add(paramCostumer)

        cmd.ExecuteNonQuery()

        con.Close()

Men den kommer med en fejl når jeg køre koden:

The ConnectionString property has not been initialized.
Avatar billede arne_v Ekspert
11. maj 2008 - 14:55 #7
Bruger du .NET 1.1 ??

Hvis ikke så brug ConfigurationManager som i mit eksempel !

Husk en ref til System.Configuration.dll !
Avatar billede fun22 Nybegynder
11. maj 2008 - 16:44 #8
Nej jeg bruger .net 3.5...
Avatar billede fun22 Nybegynder
11. maj 2008 - 16:54 #9
Så kommer den igen med det med at ConfigurationManager ikke er "declared"..

Du får lige hele siden:

Imports System
Imports System.Data.SqlClient
Imports System.Configuration

Public Class NewProject

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim strSQL As String = "INSERT INTO Projects (Title, StartingDate, EndDate, Employe, Costumer) VALUES (@Title, @StartingDate, @EndDate, @Employe, @Costumer)"

        Dim con As New SqlConnection(ConfigurationManager.ConnectionStrings("Conn").ConnectionString)
        con.Open()
        Dim cmd As New SqlCommand(strSQL, con)

        Dim paramID As SqlParameter
        paramID = New SqlParameter("@Title", SqlDbType.VarChar)
        paramID.Value = Title.Text
        cmd.Parameters.Add(paramID)

        Dim paramStartingDate As SqlParameter
        paramStartingDate = New SqlParameter("@StartingDate", SqlDbType.Date)
        paramStartingDate.Value = StartingDate.Text
        cmd.Parameters.Add(paramStartingDate)

        Dim paramEndDate As SqlParameter
        paramEndDate = New SqlParameter("@EndDate", SqlDbType.Date)
        paramEndDate.Value = EndingDate.Text
        cmd.Parameters.Add(paramEndDate)

        Dim paramEmploye As SqlParameter
        paramEmploye = New SqlParameter("@Employe", SqlDbType.VarChar)
        paramEmploye.Value = Employe.Text
        cmd.Parameters.Add(paramEmploye)

        Dim paramCostumer As SqlParameter
        paramCostumer = New SqlParameter("@Costumer", SqlDbType.Int)
        paramCostumer.Value = Costumer.SelectedValue
        cmd.Parameters.Add(paramCostumer)

        cmd.ExecuteNonQuery()

        con.Close()
    End Sub
End Class
Avatar billede arne_v Ekspert
11. maj 2008 - 19:09 #10
Har du husket ref til System.Configuration.dll ?
Avatar billede fun22 Nybegynder
11. maj 2008 - 19:39 #11
ja med Imports System.Configuration... Skal jeg gøre det på andre måder?
Avatar billede fun22 Nybegynder
11. maj 2008 - 19:59 #12
Arh.. Har fundet ud af at lave en reference til System.Configuration.dll..

Men den udføre ikke koden.. Jeg har tilføjet en Close() i bunden af kode, så den lukke min form når jeg klikker på knappen.. og det virker fint.. Men den tilføjer ikke noget til databasen, og kommer heller ikke med fejl..
Avatar billede fun22 Nybegynder
11. maj 2008 - 20:14 #13
Hvis jeg laver denher:

MsgBox(cmd.ExecuteNonQuery().ToString)

Retunere den godt nok et 1 tal.. men der er bare ingen ting i databasen..
Avatar billede arne_v Ekspert
11. maj 2008 - 20:21 #14
Er du helt sikker på at rækken ikke er blebet indsat ? Og at du ikke bare mangler
at refreshe ?
Avatar billede fun22 Nybegynder
11. maj 2008 - 20:24 #15
Når jeg bruger min database explorer i VS2008 og bruger execute sql så den opdatere kommer der ikke noget frem..
Avatar billede fun22 Nybegynder
11. maj 2008 - 20:42 #16
Har fundet ud af det har noget med mine datoer at gøre..

De er i formattet 01-12-2008... Og det skal jo så laves om til 2008-12-01..
Avatar billede arne_v Ekspert
11. maj 2008 - 21:00 #17
Du bør kunne:

dinparam.Value = DateTime.Parse(ditfelt.Text)
Avatar billede fun22 Nybegynder
12. maj 2008 - 09:47 #18
Super det var sådan det skulle være.. Hvade ellers prøvet med diverse konvateringer...

Takker meget for hjælpen ;) Smid et svar...
Avatar billede arne_v Ekspert
12. maj 2008 - 15:06 #19
kommer her
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