2010-09-15 12 views
1

J'ai une colonne dans une table qui contient un message et je veux que ce message soit affiché dans une étiquette. Voici mon code qui ne remplit pas l'étiquette actuellement.Remplir l'étiquette d'un seul champ dans le serveur SQL

Protected conString As String = ConfigurationManager.AppSettings("sqldirectory") 
Dim cnn As New SqlConnection(conString) 
    Dim cmd As New SqlCommand("select message from [database].[dbo].[table]") 
    Dim dr As SqlDataReader 

    Try 
     cnn.Open() 
     dr = cmd.ExecuteReader() 
     lblMsg.Text = dr(0).ToString 
    Catch ex As Exception 
     dr = Nothing 
    Finally 
     cnn.Close() 
    End Try 

Répondre

1

Ok, après avoir joué, je suis venu avec ce qui fonctionne

Protected conString As String = ConfigurationManager.AppSettings("sqldirectory") 
Dim cnn As New SqlConnection(conString) 
Dim cmd As New SqlCommand("select message from [database].[dbo].[table]", cnn) 
Dim dr As SqlDataReader 
Dim msg As String 
Try 
    cnn.Open() 
    dr = cmd.ExecuteReader(System.Data.CommandBehavior.CloseConnection) 
    While dr.Read() 
     msg = dr("message") 
     lblMsg.Text = msg 
    End While 
Catch ex As Exception 
    dr = Nothing 
Finally 
    cnn.Close() 
End Try 
0

Je suis tombé sur ce par hasard tout en cherchant autre chose. Il existe un moyen plus simple de le faire.

Je serais tenté de créer un app_code commun pour ce faire. Créez votre dossier App_Code dans votre projet et et un fichier common.vb avec le code suivant:

Imports Microsoft.VisualBasic 
Imports System.Data.SqlClient 
Imports System.Data 

Namespace GetDBResult 
Public Class DB 
    Public Shared Function GetRecord(sql As String) As String 
     Dim result As String 
     Dim connection As New SqlConnection(ConfigurationManager.ConnectionStrings("YourConnectionString").ToString) 
     connection.Open() 

     Dim command As New SqlCommand(sql, connection) 

     Try 
      If command.ExecuteScalar IsNot System.DBNull.Value Then 
       result = command.ExecuteScalar 
      Else 
       result = "" 
      End If 
     Catch ex As Exception 
      Throw ex 

     Finally 
      connection.Close() 
     End Try 

     Return result 
    End Function 
    End Class 
    End Namespace 

De là, vous pourrez appeler la fonction de tout code vb, il est très facile d'obtenir un champ de une base de données pour l'assigner à une étiquette. Comme suit:

Dim sql as string = "your sql query which should return one row and column" 
    label1.text = DB.GetRecord(sql) 

Enregistre beaucoup de re-dactylographie.

Oh, souvenez-vous d'importer votre code dans tous les vb que vous souhaitez utiliser votre App_Code

Imports GetDBResult 

Un grand merci, Neil