Проблема с объявлением DbParameter в VB.NET - PullRequest
0 голосов
/ 09 ноября 2019

Я пытаюсь использовать класс DbParameter в своем коде vb.net

Dim ParamPass As New DbParameter
    ParamPass.ParameterName = "@UserPass"
    ParamPass.Value = "xxxxx"

Я получил это сообщение

new нельзя использовать в классе, который объявлен mustinherit

если я удалил «New», я получил другую ошибку

Ссылка на объект не установлена ​​на экземпляр объекта

Я создаю объектПриложение VB.net для работы с 2 различными типами баз данных, и мне нужно использовать этот класс для создания общих параметров для передачи в другую функцию.

Любая помощь?

Ответы [ 3 ]

2 голосов
/ 09 ноября 2019

DbParameter - абстрактный класс, что означает, что вы не можете создавать его экземпляры. Вам нужно работать с одним из производных классов для системы БД, с которой вы работаете, например SqlParameter, если вы работаете с SQL Server.

https://docs.microsoft.com/de-de/dotnet/api/system.data.sqlclient.sqlparameter?view=netframework-4.8

1 голос
/ 09 ноября 2019

Если вы создаете параметры в явном виде, вам нужно использовать один и тот же поставщик для обеих баз данных, чтобы вы могли создать параметр одного типа, например, OleDbParameter или OdbcParameter. Если вы используете разных провайдеров, вам следует вызвать метод CreateParameter вашей команды, и он создаст соответствующий тип. Вы можете присвоить результат переменной DbParameter, так как они оба наследуют этот класс.

0 голосов
/ 15 ноября 2019

Я попробовал этот код, и он отлично работает

dim SQL as string ="Select UserID from Users where pass=@UserPass"
Dim Cmd As New SqlServerCe.SqlCeCommand
    Cmd.CommandText = SQL

    Dim Param = Cmd.CreateParameter
    Param.ParameterName = "@UserPass"
    Param.DbType = DbType.String
    Param.Value = TxtPass.Text

    Cmd.Parameters.Add(Param)

    Dim xdr = PF.ExecuteReader(Cmd)
    If xdr.Read() Then
        UserID = xdr("UserID")
        xdr.Close()
end if

Этот код в порядке? Другой вопрос, я использовал SqlDbType.NVarChar в качестве параметра типа данных, потому что я использую арабский текст. Могу ли я использовать DbType.String, чтобы заменить его арабским текстом. Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...