[英]SELECT SQL Statement not working as expected in VB.net Console application
我知道有類似的帖子,但我似乎無法找到任何有用的。
我還是VB的新手,這顯然讓我很生氣。
我要做的是運行SQL SELECT並將結果通過電子郵件發送給需要它的人。
當我運行它時,我收到'ELSE'電子郵件,其中說明沒有任何內容,但是在SQL Server Management Studio中運行查詢確實會顯示結果。
這是我有的:
Public Sub Main()
Dim connection As New SqlConnection(My.Settings.connectionString)
connection.Open()
Dim sqlCommand As SqlCommand
log(" Processing - Searching SQL Database for Held ONLN Jobs ")
Dim sqlQ1 As String = "Select [JobID] FROM [cemail].[dbo].[JobTb] " +
"WHERE ApplicationID = 7 AND Status = 10 ORDER BY [JobID]"
sqlCommand1 = New SqlCommand(sqlQ1, connection)
Dim result = sqlCommand1.ExecuteScalar()
Dim sqlQ2 As String = "Select [JobID],[JobNumber],[ApplicationID],[GeneratedDate]," +
"[ReceivedDate],[CompletedDate],[Status],[ExpectedRecordNumber]," +
"[ReceivedRecordNumber],[BadRecordNumber] " +
"FROM [cemail].[dbo].[JobTb] " +
"WHERE ApplicationID = 7 AND Status = 10"
sqlCommand2 = New SqlCommand(sqlQ2, connection)
Dim reader As SqlDataReader = sqlCommand2.ExecuteReader()
While reader.Read()
Dim jobID = reader(0)
Dim jobNumber = reader(1)
Dim appID = reader(2)
End While
If (result > 0) Then
SendEmail(My.Settings.emailuser1, "Current Held Jobs", "Hello," & jobID & "Kind Ragards" )
Else
SendEmail(My.Settings.emailuser1, "No Jobs on Hold", "There are no Jobs Currently on Hold" )
End If
connection.Close()
log("Finished")
End Sub
任何有關這方面的幫助將不勝感激。 提前致謝。
傳遞Select語句時,不應調用ExecuteNonQuery 。
從MSDN的評論開始
對於UPDATE,INSERT和DELETE語句,返回值是受命令影響的行數。 .........對於所有其他類型的語句,返回值為-1 .......
您可以通過這種方式更改語句以簡化查詢
Dim sqlQ As String = "Select count(*) as recFound FROM [cemail].[dbo].[JobTb] " +
"WHERE ApplicationID = 7 AND Status = 10"
sqlCommand = New SqlCommand(sqlQ, connection)
Dim result = sqlCommand.ExecuteScalar()
此外,在上面的代碼中,不需要使用事務。
編輯查看您的評論我還將顯示使用SqlDataReader從數據庫讀回值的部分
Dim sqlQ As String = "Select [JobID],[JobNumber],[ApplicationID],[GeneratedDate]," +
"[ReceivedDate],[CompletedDate],[Status],[ExpectedRecordNumber]," +
"[ReceivedRecordNumber],[BadRecordNumber] " +
"FROM [cemail].[dbo].[JobTb] " +
"WHERE ApplicationID = 7 AND Status = 10"
sqlCommand = New SqlCommand(sqlQ, connection)
Dim reader As SqlDataReader = sqlCommand.ExecuteReader()
While reader.Read()
Dim jobID = reader(0)
Dim jobNumber = reader(1)
Dim appID = reader(2)
..... 'and so on'
End While
我認為問題是你想要執行一個查詢但是正在使用ExecuteNonQuery() 。 嘗試使用SqlDataAdapter,如下所示:
Public Function SelectSqlSrvRows(dataSet As DataSet, connection As String, query As String) As DataSet
Dim conn As New SqlConnection(connection)
Dim adapter As New SqlDataAdapter()
adapter.SelectCommand = new SqlCommand(query, conn)
adapter.Fill(dataset)
Return dataset
End Function
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.