OLEDB接続の接続を確立しようとしていますが、使用していないので実際に何が間違っているのか分かりません。私はweb.configファイルで接続を取得できたと思いますが、今は 'must declare scalar variable'エラーが発生します。私はそれを宣言したと思ったが、間違っていなければならない。OLEDB、スカラー変数エラーを一切使用していません
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
OleDbの代わりにSqlClientを使用する必要があります。それはより速いです。 – SLaks
私はあなたが何を意味するか分かりません。私は以前これを使ったことがないので、私はGoogleの検索を行ったときに何かを働かせようとしました。 :/ – jlg
基本的に、 'OleDb'のすべての出現を' SqlClient'で置き換え、直接SQL Serverの接続文字列を使用します。今は、OLE DBラッパーを使用していますが、これは遅いです。 – SLaks