Avatar billede benneharli Juniormester
28. november 2010 - 23:13 Der er 8 kommentarer og
1 løsning

SQL Server version i VB.NET

Hejsa

Jeg prøver at få comp level ud af en SQL via VB.NET, men det lykkes ikke rigtigt...

sp_dbcmptlevel 'dbname'

Jeg kan lave andre queries, men kan ikke lige klare den her...

/Benji
Avatar billede arne_v Ekspert
28. november 2010 - 23:17 #1
Eksempel:

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

Namespace E
    Public Class Program
        Private Shared Sub Disp(sender As Object, evtargs As SqlInfoMessageEventArgs)
            For Each err As SqlError In evtargs.Errors
                Console.WriteLine("Message: " & err.Message)
            Next
        End Sub
        Public Shared Sub Main(args As String())
            Using con As New SqlConnection("Server=ARNEPC3\SQLEXPRESS2008;Integrated Security=true;Database=Test")
                con.Open()
                Dim cmd As New SqlCommand()
                cmd.CommandText = "sp_dbcmptlevel"
                cmd.CommandType = CommandType.StoredProcedure
                cmd.Connection = con
                Dim p As New SqlParameter()
                p.ParameterName = "@dbname"
                p.DbType = DbType.[String]
                p.Size = 128
                p.Direction = ParameterDirection.Input
                p.Value = "Test"
                cmd.Parameters.Add(p)
                AddHandler con.InfoMessage, AddressOf Disp
                Dim rdr As SqlDataReader = cmd.ExecuteReader()
                While rdr.Read()
                    Console.WriteLine("result set: " & Convert.ToString(rdr(0)))
                End While
                rdr.Close()
            End Using
            Console.ReadKey()
        End Sub
    End Class
End Namespace
Avatar billede arne_v Ekspert
28. november 2010 - 23:17 #2
Tricket er at den kommer ud som message og ikke som result set.
Avatar billede benneharli Juniormester
29. november 2010 - 13:47 #3
Hvordan er det så lige at jeg får startet sub'en, eller får trukket data ud? Det kan jeg ikke lige gennemskue.
Avatar billede benneharli Juniormester
29. november 2010 - 13:52 #4
Alstå, hvis jeg f.eks. har en knap i en form, og vil have resultatet i en message box?
Avatar billede arne_v Ekspert
29. november 2010 - 14:54 #5
AddHandler con.InfoMessage, AddressOf Disp

goer at Disp bliver kaldt med messages fra SQLServer.
Avatar billede arne_v Ekspert
29. november 2010 - 14:55 #6
Hvis det er win form skal:

Console.WriteLine("Message: " & err.Message)

erstattes med noget som opdaterer en GUI kontrol.
Avatar billede benneharli Juniormester
30. november 2010 - 09:11 #7
Jeg er rimeligt ny i VB.NET, så jeg skal have lidt mere hjælp. Her er dine sub's (med en ændring i Disp), og en button_1.click - hvordan skal det kobles sammen så jeg kører det når jeg klikke på knappen?

---------------------------------------------------------------

    'Button1
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

    End Sub

    Private Shared Sub Disp(ByVal sender As Object, ByVal evtargs As SqlInfoMessageEventArgs)
        For Each err As SqlError In evtargs.Errors
            MessageBox.Show("Message: " & err.Message)
            'Console.WriteLine("Message: " & err.Message)
        Next
    End Sub


    Public Shared Sub Main(ByVal args As String())
        Using con As New SqlConnection("Server=.\SQL2008;Integrated Security=true;Database=taclogdata")
            con.Open()
            Dim cmd As New SqlCommand()
            cmd.CommandText = "sp_dbcmptlevel"
            cmd.CommandType = CommandType.StoredProcedure
            cmd.Connection = con
            Dim p As New SqlParameter()
            p.ParameterName = "@dbname"
            p.DbType = DbType.[String]
            p.Size = 128
            p.Direction = ParameterDirection.Input
            p.Value = "Test"
            cmd.Parameters.Add(p)
            AddHandler con.InfoMessage, AddressOf Disp
            Dim rdr As SqlDataReader = cmd.ExecuteReader()
            While rdr.Read()
                Console.WriteLine("result set: " & Convert.ToString(rdr(0)))
            End While
            rdr.Close()
        End Using
        Console.ReadKey()
    End Sub
Avatar billede benneharli Juniormester
30. november 2010 - 09:15 #8
Har det. Button skal starte den nederste, der så kalder Disp.

Smid et svar.
Avatar billede arne_v Ekspert
01. december 2010 - 03:08 #9
ok
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