I am trying to write a select statement (postgreSQL) which uses a field from my app screen.
I have been unsuccessful for 2 days. Any help and/or explanations etc... would be greatly appreciated.
Below is the entire sub. (The code is not completed, optimized, or tested yet so forgive any bad coding please) The error is received on the following line: ODBCdaDups.Fill(dsDups2) The error received is: ERROR [42883] ERROR: operator does not exist: @ text; & vblf & "Error while executing the query" I tried using numbered parameters ($1, $2, etc...) but could not figure it out either.
Private Sub Check4Duplicate()
Dim DupMessage As String
Try
Dim DupSQL As String = Nothing
Dim DupConn As New OdbcConnection()
Dim strConn As String = ""
If GlobalVariables.logProd = 1 Then
strConn = "Driver={PostgreSQL ANSI};database=SacredSelections;server=127.0.0.1;port=5432;uid=SSApp;sslmode=disable;readonly=0;protocol=7.4;User ID=SSApp;password=Cordova123;"
Else
strConn = "Driver={PostgreSQL ANSI};database=SacredSelectionsTest;server=127.0.0.1;port=5432;uid=SSApp;sslmode=disable;readonly=0;protocol=7.4;User ID=SSApp;password=Cordova123;"
End If
Dim dsDups2 As New DataSet
Dim ODBCdaDups As OdbcDataAdapter
Dim cmdbldDups As OdbcCommandBuilder
Dim cmdDups As OdbcCommand
DupConn = New OdbcConnection(strConn)
DupConn.Open()
dsDups2 = New DataSet
ODBCdaDups = New OdbcDataAdapter
cmdbldDups = New OdbcCommandBuilder(ODBCdaDups)
dsDups2.DataSetName = "auctions"
' Create the SelectCommand.
' Original SQL Server command
'cmdDups = New OdbcCommand("Select * From auctions where auction_name = @auction_name;", DupConn)
' Trying to create new postgresql command
cmdDups = New OdbcCommand("do $$
begin
select *
from auctions
where auction_name = @auction_name;
end;
$$
", DupConn)
cmdDups.Parameters.Add("auction_name", SqlDbType.Text).Value = txt_auction_name.Text
cmdDups.Prepare()
ODBCdaDups.SelectCommand = cmdDups
ODBCdaDups.Fill(dsDups2)
DupConn.Close()
If Not DupConn Is Nothing Then DupConn.Dispose()
DupMessage = ""
' Loop over tables in the DataSet.
Dim collection As DataTableCollection = dsDups2.Tables
If dsDups2.Tables(0).Rows.Count = 0 Then
DupTitle = "Unique Record - Save Allowed"
If strEditType = "Edit" Then
DupMessage = "This will save changes to an existing Unique record for Auction ID " + txt_auction_id.Text + " and Auction Name " + txt_auction_name.Text + " and Location Name " + txt_location_address.Text
Else
DupMessage = "This will create a Unique record for Auction ID " + txt_auction_id.Text + " and Auction Name " + txt_auction_name.Text + " and Location Name " + txt_location_address.Text
End If
Else
DupTitle = "Duplicate Record - Save NOT Allowed"
DupMessage = "A record already exists with Auction ID " + txt_auction_id.Text + " and Auction Name " + txt_auction_name.Text + " and Location Name " + txt_location_address.Text
MessageBox.Show(DupMessage, DupTitle)
End If
Catch ex As Exception
DupTitle = "Connection failed"
DupMessage = "Unable to Open Auction Information Connection to check for Existing Records"
MessageBox.Show(DupMessage, DupTitle)
End Try
End Sub
cmdDups.Parameters.Add("@auction_name, SqlDbType.Text).Value = ...`