none
Заполнить Reader используя SQLDatasource RRS feed

  • Вопрос

  • Добрый день,

    не подскажете, можно ли заполнить Reader данными используя SQLDatasource?

    Везде только стандартные способы (пишем строку подключения, объявляем соединение и проч), а мне интересно можно ли работать с SQLDatasource - так было бы удобней.

    Заранее спасибо.
    18 ноября 2009 г. 11:25

Ответы

  • А зачем, если не секрет?

    SqlDataReader - класс
    Предоставляет возможность чтения потока строк только в прямом направлении из базы данных SQL Server
    ms-help://MS.VSCC.v90/MS.MSDNQTR.v90.ru/fxref_system.data/html/6f7876d5-d10f-dcb1-f48b-9b43e7167428.htm

    Заполнить его, я думаю не удастся :).

    Строку подключения лучше объявить в Web.config.

    <connectionStrings>
     <add name="ConnectionString1" connectionString="Data Source=SQLEXPRESS;Initial Catalog=base;Integrated Security=True;uid=sa;pwd=pwd;Connection Lifetime=600;Max Pool Size=1024" providerName="System.Data.SqlClient"/>
    </connectionStrings>
    

    Для SqlDataSource, например:

    ConnectionString="<%$ ConnectionStrings:ConnectionString1 %>
    И там где надо:
        Private dp As String = ConfigurationManager.ConnectionStrings("ConnectionString1").ProviderName
        Private cnStr As String = ConfigurationManager.ConnectionStrings("ConnectionString1").ConnectionString
        Private df As DbProviderFactory = DbProviderFactories.GetFactory(dp)
        Private cn As DbConnection = df.CreateConnection()
    
        Private Sub Activate()
            If cn.State = ConnectionState.Closed Then
    
                Dim cnStrBuilder As SqlConnectionStringBuilder = New SqlConnectionStringBuilder(cnStr)
                'cnStrBuilder.ConnectTimeout = 30
                cn.ConnectionString = cnStrBuilder.ConnectionString
    
                cn.Open()
    
            End If
    
        End Sub
    И ваша функция, например:
            Dim cmd As DbCommand = df.CreateCommand()
            Dim param As SqlParameter
            Dim strSQL As String
            Dim dr As SqlDataReader
    
            If cn.State = ConnectionState.Closed Then Call Activate()
    
            strSQL = "SELECT usUserName FROM tabUsers WHERE usID=@ID;"
            cmd = New SqlCommand(strSQL, cn)
    
            param = New SqlParameter()
            param.ParameterName = "@ID"
            param.Value = decID
            param.SqlDbType = SqlDbType.Decimal
            param.Precision = 14
            param.Scale = 0
            cmd.Parameters.Add(param)
    
            cmd.Prepare()
            dr = cmd.ExecuteReader(CommandBehavior.SingleRow)
    
            If dr.Read() Then
                Return dr("usUserName")
    
            Else
                Return "-1"
    
            End If
    
            If Not dr.IsClosed Then dr.Close() : dr = Nothing
            param = Nothing
            cmd.Dispose()
    • Предложено в качестве ответа I.Vorontsov 19 ноября 2009 г. 6:40
    • Отменено предложение в качестве ответа Gennadiy Stakhovskiy 19 ноября 2009 г. 10:26
    • Помечено в качестве ответа Gennadiy Stakhovskiy 19 ноября 2009 г. 10:27
    18 ноября 2009 г. 18:33