VB Visual Basic  ·  25 вопросов  ·  ~70 мин  ·  ⏱ Таймер 10:00  ·  Средний  · 

ADO.NET и параметризованные запросы

Тест по теме «ADO.NET и параметризованные запросы» состоит из 25 вопросов: нужно читать код, сравнивать близкие решения, находить границы применимости правил и разбирать последствия ошибок. Заданий с кодом — 15; после каждого ответа открывается объяснение.

Отвечено: 0 из 25
⏱ --:--
0%
💡 Инструкция: Выберите один ответ из пяти. На тест отведено 70 минут; после ответа можно открыть объяснение.
Вопрос 1 из 25
Посмотрите на фрагмент по теме «Соединения с базой». Какое объяснение точнее всего связывает код с его поведением?
Visual Basic / VB.NETVisual Basic · ADO.NET и параметризованные запросы
Imports System.Data.Common
Module Demo
    Function ReadCount(factory As DbProviderFactory, cs As String) As Integer
        Using connection = factory.CreateConnection()
            connection.ConnectionString = cs
            connection.Open()
            Using command = connection.CreateCommand()
                command.CommandText = "select count(*) from orders"
                Return Convert.ToInt32(command.ExecuteScalar())
            End Using
        End Using
    End Function
End Module
Вопрос 2 из 25
Раздел «Соединения с базой»: какой вывод должен пережить рефакторинг этого фрагмента?
Visual Basic / VB.NETVisual Basic · ADO.NET и параметризованные запросы
Option Strict On
Imports System.Data.Common
Namespace ReviewCase16_1
    Module Demo
        Function ReadCount(reviewFactory As DbProviderFactory, reviewCs As String) As Integer
            Using connection = reviewFactory.CreateConnection()
                connection.ConnectionString = reviewCs
                connection.Open()
                Using command = connection.CreateCommand()
                    command.CommandText = "select count(*) from orders"
                    Return Convert.ToInt32(command.ExecuteScalar())
                End Using
            End Using
        End Function
    End Module
End Namespace
Вопрос 3 из 25
Раздел «Соединения с базой»: какое правило нельзя считать проверенным одним обычным примером?
Visual Basic / VB.NETVisual Basic · ADO.NET и параметризованные запросы
Option Explicit On
Option Infer On
Imports System.Data.Common
Namespace BoundaryCase16_1
    Module Demo
        Function ReadCount(edgeFactory As DbProviderFactory, edgeCs As String) As Integer
            Using connection = edgeFactory.CreateConnection()
                connection.ConnectionString = edgeCs
                connection.Open()
                Using command = connection.CreateCommand()
                    command.CommandText = "select count(*) from orders"
                    Return Convert.ToInt32(command.ExecuteScalar())
                End Using
            End Using
        End Function
    End Module
End Namespace
Вопрос 4 из 25
Раздел «Соединения с базой»: что стоит закрепить в коде и тестах, а не прикрывать общим обработчиком?
Вопрос 5 из 25
Раздел «Соединения с базой»: какое обобщение не зависит от случайных деталей показанного примера?
Вопрос 6 из 25
Раздел «Команды базы данных»: код использует Create. Какой вывод останется верным при других допустимых входных данных?
Visual Basic / VB.NETVisual Basic · ADO.NET и параметризованные запросы
Imports System.Data.Common
Module Demo
    Function Create(factory As DbProviderFactory, connection As DbConnection) As DbCommand
        Dim command = factory.CreateCommand()
        command.Connection = connection
        command.CommandText = "select id from users where email = @email"
        command.CommandTimeout = 15
        Return command
    End Function
End Module
Вопрос 7 из 25
Раздел «Команды базы данных»: что следует зафиксировать в ревью, чтобы ошибка не переехала из сборки в выполнение?
Visual Basic / VB.NETVisual Basic · ADO.NET и параметризованные запросы
Option Strict On
Imports System.Data.Common
Namespace ReviewCase16_2
    Module Demo
        Function Create(reviewFactory As DbProviderFactory, reviewConnection As DbConnection) As DbCommand
            Dim reviewCommand = reviewFactory.CreateCommand()
            reviewCommand.Connection = reviewConnection
            reviewCommand.CommandText = "select id from users where email = @email"
            reviewCommand.CommandTimeout = 16
            Return reviewCommand
        End Function
    End Module
End Namespace
Вопрос 8 из 25
Раздел «Команды базы данных»: какое правило нельзя считать проверенным одним обычным примером?
Visual Basic / VB.NETVisual Basic · ADO.NET и параметризованные запросы
Option Explicit On
Option Infer On
Imports System.Data.Common
Namespace BoundaryCase16_2
    Module Demo
        Function Create(edgeFactory As DbProviderFactory, edgeConnection As DbConnection) As DbCommand
            Dim edgeCommand = edgeFactory.CreateCommand()
            edgeCommand.Connection = edgeConnection
            edgeCommand.CommandText = "select id from users where email = @email"
            edgeCommand.CommandTimeout = 14
            Return edgeCommand
        End Function
    End Module
End Namespace
Вопрос 9 из 25
Раздел «Команды базы данных»: как уменьшить риск дефекта, не подменяя причину запасным значением?
Вопрос 10 из 25
Что можно считать надёжным рабочим правилом для раздела «Команды базы данных»?
Вопрос 11 из 25
Какой вывод о фрагменте по теме «Параметры запросов» технически обоснован?
Visual Basic / VB.NETVisual Basic · ADO.NET и параметризованные запросы
Imports System.Data
Imports System.Data.Common
Module Demo
    Sub AddEmail(command As DbCommand, email As String)
        Dim p = command.CreateParameter()
        p.ParameterName = "@email"
        p.DbType = DbType.String
        p.Size = 320
        p.Value = email
        command.Parameters.Add(p)
    End Sub
End Module
Вопрос 12 из 25
Раздел «Параметры запросов»: какая претензия к возможной правке относится к поведению программы?
Visual Basic / VB.NETVisual Basic · ADO.NET и параметризованные запросы
Option Strict On
Imports System.Data
Imports System.Data.Common
Namespace ReviewCase16_3
    Module Demo
        Sub AddEmail(reviewCommand As DbCommand, reviewEmail As String)
            Dim p = reviewCommand.CreateParameter()
            p.ParameterName = "@reviewEmail"
            p.DbType = DbType.String
            p.Size = 321
            p.Value = reviewEmail
            reviewCommand.Parameters.Add(p)
        End Sub
    End Module
End Namespace
Вопрос 13 из 25
Раздел «Параметры запросов»: что именно должен локализовать полезный граничный тест для этого кода?
Visual Basic / VB.NETVisual Basic · ADO.NET и параметризованные запросы
Option Explicit On
Option Infer On
Imports System.Data
Imports System.Data.Common
Namespace BoundaryCase16_3
    Module Demo
        Sub AddEmail(edgeCommand As DbCommand, edgeEmail As String)
            Dim p = edgeCommand.CreateParameter()
            p.ParameterName = "@edgeEmail"
            p.DbType = DbType.String
            p.Size = 319
            p.Value = edgeEmail
            edgeCommand.Parameters.Add(p)
        End Sub
    End Module
End Namespace
Вопрос 14 из 25
Какое решение соответствует реальному времени жизни объектов и правилам «Параметры запросов»?
Вопрос 15 из 25
Что точнее всего описывает механизм «Параметры запросов»?
Вопрос 16 из 25
Раздел «Транзакции базы данных»: какое утверждение позволяет предсказать поведение фрагмента по правилам Visual Basic и .NET?
Visual Basic / VB.NETVisual Basic · ADO.NET и параметризованные запросы
Imports System.Data.Common
Module Demo
    Sub Transfer(connection As DbConnection)
        Using transaction = connection.BeginTransaction()
            Using debit = connection.CreateCommand(), credit = connection.CreateCommand()
                debit.Transaction = transaction
                credit.Transaction = transaction
                debit.CommandText = "update accounts set balance=balance-10 where id=1"
                credit.CommandText = "update accounts set balance=balance+10 where id=2"
                debit.ExecuteNonQuery()
                credit.ExecuteNonQuery()
                transaction.Commit()
            End Using
        End Using
    End Sub
End Module
Вопрос 17 из 25
Раздел «Транзакции базы данных»: какая претензия к возможной правке относится к поведению программы?
Visual Basic / VB.NETVisual Basic · ADO.NET и параметризованные запросы
Option Strict On
Imports System.Data.Common
Namespace ReviewCase16_4
    Module Demo
        Sub Transfer(reviewConnection As DbConnection)
            Using transaction = reviewConnection.BeginTransaction()
                Using debit = reviewConnection.CreateCommand(), credit = reviewConnection.CreateCommand()
                    debit.Transaction = transaction
                    credit.Transaction = transaction
                    debit.CommandText = "update accounts set balance=balance-11 where id=1"
                    credit.CommandText = "update accounts set balance=balance+11 where id=3"
                    debit.ExecuteNonQuery()
                    credit.ExecuteNonQuery()
                    transaction.Commit()
                End Using
            End Using
        End Sub
    End Module
End Namespace
Вопрос 18 из 25
Раздел «Транзакции базы данных»: какое утверждение поможет отличить настоящий дефект от случайности тестовых данных?
Visual Basic / VB.NETVisual Basic · ADO.NET и параметризованные запросы
Option Explicit On
Option Infer On
Imports System.Data.Common
Namespace BoundaryCase16_4
    Module Demo
        Sub Transfer(edgeConnection As DbConnection)
            Using transaction = edgeConnection.BeginTransaction()
                Using debit = edgeConnection.CreateCommand(), credit = edgeConnection.CreateCommand()
                    debit.Transaction = transaction
                    credit.Transaction = transaction
                    debit.CommandText = "update accounts set balance=balance-9 where id=1"
                    credit.CommandText = "update accounts set balance=balance+9 where id=1"
                    debit.ExecuteNonQuery()
                    credit.ExecuteNonQuery()
                    transaction.Commit()
                End Using
            End Using
        End Sub
    End Module
End Namespace
Вопрос 19 из 25
Какое решение соответствует реальному времени жизни объектов и правилам «Транзакции базы данных»?
Вопрос 20 из 25
Что можно считать надёжным рабочим правилом для раздела «Транзакции базы данных»?
Вопрос 21 из 25
Какой вывод о фрагменте по теме «Совместимость версий» технически обоснован?
Visual Basic / VB.NETVisual Basic · ADO.NET и параметризованные запросы
Imports System.Data.Common

Class UserRepository
    Private ReadOnly factory As DbProviderFactory

    Public Sub New(factory As DbProviderFactory)
        Me.factory = factory
    End Sub

    Public Function CreateConnection(connectionString As String) As DbConnection
        Dim connection = factory.CreateConnection()
        If connection Is Nothing Then Throw New InvalidOperationException("Provider cannot create a connection")
        connection.ConnectionString = connectionString
        Return connection
    End Function
End Class
Вопрос 22 из 25
Раздел «Совместимость версий»: перед объединением правки нужно проверить один принцип. Какой именно?
Visual Basic / VB.NETVisual Basic · ADO.NET и параметризованные запросы
Option Strict On
Imports System.Data.Common

Namespace ReviewCase16_5
    Class UserRepository
        Private ReadOnly reviewFactory As DbProviderFactory

        Public Sub New(reviewFactory As DbProviderFactory)
            Me.reviewFactory = reviewFactory
        End Sub

        Public Function CreateConnection(reviewConnectionString As String) As DbConnection
            Dim reviewConnection = reviewFactory.CreateConnection()
            If reviewConnection Is Nothing Then Throw New InvalidOperationException("Provider cannot create a reviewConnection")
            reviewConnection.ConnectionString = reviewConnectionString
            Return reviewConnection
        End Function
    End Class
End Namespace
Вопрос 23 из 25
Раздел «Совместимость версий»: что изменится первым при нарушении ключевого допущения этого фрагмента?
Visual Basic / VB.NETVisual Basic · ADO.NET и параметризованные запросы
Option Explicit On
Option Infer On
Imports System.Data.Common

Namespace BoundaryCase16_5
    Class UserRepository
        Private ReadOnly edgeFactory As DbProviderFactory

        Public Sub New(edgeFactory As DbProviderFactory)
            Me.edgeFactory = edgeFactory
        End Sub

        Public Function CreateConnection(edgeConnectionString As String) As DbConnection
            Dim edgeConnection = edgeFactory.CreateConnection()
            If edgeConnection Is Nothing Then Throw New InvalidOperationException("Provider cannot create a edgeConnection")
            edgeConnection.ConnectionString = edgeConnectionString
            Return edgeConnection
        End Function
    End Class
End Namespace
Вопрос 24 из 25
Раздел «Совместимость версий»: обычный сценарий в рабочем модуле проходит, но поведение ещё не закреплено проверкой. Какое решение не маскирует причину?
Вопрос 25 из 25
Какое правило по теме «Совместимость версий» можно безопасно перенести из примера в реальный проект?

Ответьте на все 25 вопросов, чтобы получить результат

🔗 Встроить тест на свой сайт (iframe) ▼

Скопируйте код и вставьте в любое место на вашем сайте:

Также доступна прямая ссылка на embed-страницу