Никогда не использовал OLEDB, ошибка скалярной переменной - PullRequest
0 голосов
/ 06 марта 2012

Я пытаюсь установить соединение для соединения OLEDB, но так как я никогда не использовал его, я действительно не знаю, что я делаю неправильно.Мне кажется, мне удалось получить соединение в файле web.config, но теперь я получаю ошибку «Должен объявить скалярную переменную».Я думал, что объявил это, но это должно быть неправильно.

Private Function GetBackUpAccountName(ByVal BAccount As String, ByRef Name As String) As Boolean
    'sql statement for baccount information in case BAccount is not found, search here next
    Dim backupsql As String = "select * from brokermaster bl WHERE BAccount = @BAccount"
    Using conn As New OleDbConnection(System.Configuration.ConfigurationManager.ConnectionStrings("BackUpConnectionString").ConnectionString)
        Using cmd As New OleDbCommand(backupsql, conn)
            cmd.Parameters.AddWithValue("@BAccount", BAccount)
            conn.Open()
            Using backuprdr As OleDbDataReader = cmd.ExecuteReader
                If (backuprdr.Read) Then
                    Name = backuprdr("Name").ToString()
                    Return True
                Else
                    Return False
                End If
            End Using
            conn.Close()
        End Using
    End Using
End Function

<add name="BackUpConnectionString" 
     connectionString="Provider=SQLOLEDB;Data Source=*******;Initial Catalog=DeskA;Persist Security Info=True;User ID=******;Password=******" 
     providerName="System.Data.OleDb"/>

Эта функция является копией другой функции, которую я имею на странице для соединения SQL.Я должен получить информацию об учетной записи для клиентов, и, если они не найдены в этой базе данных, мне нужно найти их в другой базе данных, прежде чем показать ошибку.Это функция, которая работает.Он работает уже несколько месяцев, и сегодня нам было предложено выполнить поиск в другой базе данных, прежде чем появится всплывающее сообщение о том, что их аккаунт не найден.

Private Function GetAccountName(ByVal BAccount As String, ByRef FirstName As String, ByRef LastName As String) As Boolean
    'sql statement for baccount information
    Dim sql As String = "SELECT BAccount, First_Name, Last_Name FROM IB inner join IB_BUISNESS_INFORMATION ON (IB.IB_ID = IB_BUISNESS_INFORMATION.IB_ID) WHERE BAccount = @BAccount"
    Using conn As New SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings("IBConnectionString").ConnectionString)
        Using cmd As New SqlCommand(sql, conn)
            cmd.Parameters.AddWithValue("@BAccount", BAccount)
            conn.Open()
            Using rdr As SqlDataReader = cmd.ExecuteReader
                If (rdr.Read) Then
                    FirstName = rdr("First_Name").ToString()
                    LastName = rdr("Last_Name").ToString()
                    Return True
                Else
                    Return False
                End If
            End Using
            conn.Close()
        End Using
    End Using
End Function

1 Ответ

0 голосов
/ 07 марта 2012

OleDB использует позиционные параметры. Сделай это ...

Dim backupsql As String = "select * from brokermaster bl WHERE BAccount = ?"

А размещать значение источника данных в строке подключения в общедоступных сообщениях - рискованное дело.

...