我正試圖使用VB.NET應用程式從SQL Server中獲取多個資料集。問題是,每次我試圖執行查詢時。 我都會得到這樣的資訊:
無法改變屬性 "ConnectionString"。連接的當前狀態是打開的
然后我試圖通過啟用MARS來解決這個問題
<connectionStrings>
<add name="ConString"
providerName="System.Data.SqlClient"。
connectionString="Data Source=my-PC;Initial Catalog=Project;Persist Security Info=True; MultipleActiveResultSets=true;User ID=user;Password=*****"/span> />
</connectionStrings>
這是我的代碼
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1. 點擊
Dim obj, body
obj = TextBox1.Text。
body = TextBox2.文本For Each mail In getemail()
Send_mail(mail, obj, body, getattachment(mail))
下一步
MsgBox("Traitement effectué")
結束 Sub
Function getemail() As List(Of String)
Dim strMailTo As New List(Of String)
Dim SQL As String = "Select EMail FROM [USER] WHERE EMail Is Not NULL And MatriculeSalarie Is Not NULL And [EMail] < > '' and EtatPaie = 3 and BulletinDematerialise = 1"/span>
Dim cmd As New SqlCommand
Dim sqLdr As SqlDataReader
Dim dr As DataRow
Try Try
ConnServer()
cmd.Connection = con
cmd.CommandText = SQL
使用 sda As New SqlDataAdapter(cmd)
使用 ds As New DataTable()
sda.Fill(ds)
sqLdr = cmd.ExecuteReader()
For i = 0 To ds.Rows.Count - 1
dr = ds.Rows(i)
strMailTo.Add(dr("EMail"/span>)
下一個
End Using Using
End Using
Return strMailTo
sqLdr.Close()
Catch ex As Exception
MsgBox(ex.Message.ToString)
End Try
closeCon()
Return strMailTo
結束 功能
Function getattachment(email) As String()
Dim SQL As String = "Select MatriculeSalarie FROM [USER] WHERE [EMail]='" /span> & email & "'"。
Dim cmd As New SqlCommand
Dim sqLdr As SqlDataReader
ConnServer()
cmd.Connection = con
cmd.CommandText = SQL
Dim mat As String
mat = ""/span>
Dim Dir As String = ConfigurationManager.AppSettings("path1").ToString
Dim file()
sqLdr = cmd.ExecuteReader()
While sqLdr.Read
mat = sqLdr.GetValue(sqLdr.GetOrdinal("MatriculeSalarie")
End While
file = IO.Directory.GetFiles(Dir, mat.Substring(1) & "*.pdf"/span>)
sqLdr.Close()
回傳檔案
End Function
uj5u.com熱心網友回復:
如果你要做的就是在Catch中顯示一個訊息框,不要在資料庫代碼中這樣做。讓錯誤涌現在用戶界面代碼中,并在方法被呼叫的地方加上Try。
不要宣告沒有資料型別的變數。打開Option Infer的按鈕代碼設定了obj和body的型別。
Private ConStr As String = "Your connection string"
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1. 點擊
Dim obj = TextBox1.Text。
Dim body = TextBox2.Text
Dim emails As New List(Of String)
嘗試
emails = getemail()
Catch ex As Exception
MessageBox.Show(ex.Message.ToString, "Error retrieving email list")
Exit Sub
End Try Try
For Each email In emails
TryCatch ex As Exception
MessageBox.Show(ex.Message, "Error getting attachments")
End Try
下一步 下一步
MessageBox.Show("Traitement effectué")
結束 Sub
由Sub和Function使用的引數必須有一個DataType。
我不知道你在這里做什么。
我不知道你在這里做什么。
While sqLdr.Read
mat = sqLdr.GetValue(sqLdr.GetOrdinal("MatriculeSalarie")
End While
每一次迭代都將覆寫mat的前一個值。我只能假設你只期望一個單一的值,在這種情況下,你可以使用ExecuteScalar來獲得結果集第一行的第一列。在關閉連接之前,不要對資料做任何處理。只需獲得原始資料并關閉(End Using)連接。稍后再對資料進行操作。
總是使用引數。引數不被資料庫服務器視為可執行代碼。它們只是值。一個可能被插入的可執行代碼的例子是 "Drop table [USER];",其中引數的值屬于。哎呀!
Function getemail() As List(Of String)
Dim SQL As String = "Select EMail FROM [USER]
其中EMail不是NULL
而且MatriculeSalarie不是空的
而且[EMail] <> ''
而且EtatPaie = 3
并且BulletinDematerialise = 1;"
Dim dt As New DataTable
使用 con As New SqlConnection("您的連接字串")。
cmd As New SqlCommand(SQL, con)
con.Open()
使用 reader = cmd.ExecuteReader
dt.Load(reader)
結束 使用
結束 使用
Dim strMailTo As New List(Of String)
strMailTo = (From row As DataRow In dt.AsEnumerable
Select row.Field(Of String)(0) ).ToList
Return strMailTo
結束 功能
Function getattachment(email As String) As String()
Dim SQL As String = "Select MatriculeSalarie FROM [USER] WHERE [EMail]=' " & email & "'"
Dim mat As String
使用 con As New SqlConnection(ConStr)。
cmd As New SqlCommand(SQL, con)
cmd.Parameters.Add("@email", SqlDbType.VarChar).Value = email
con.Open()
mat = cmd.ExecuteScalar().ToString()
End Using
Dim Dir As String = ConfigurationManager.AppSettings("path1") .ToString
'你原來的代碼很好,不需要searchPattern。
'我添加了這個,所以你可以看到你的搜索 模式是否是你所期望的。
Dim searchPattern = mat.Substring(1) &; "*.pdf"
Debug.Print(searchPattern) '出現在即時視窗中
Dim file = IO.Directory.GetFiles(Dir, searchPattern)
回傳檔案
結束函式
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/307254.html
標籤:
