J'ai écrit un formulaire VB sur Visual Studio 2013 (.Net Framework 4.5.1) qui ouvre et édite une base de données pgSQL. Pour que l'utilisateur puisse rechercher dans la table, j'ai créé une compobox à partir de laquelle l'utilisateur peut sélectionner la colonne à rechercher et entrer ensuite la valeur qu'il recherche dans une zone de texte.VB.NET avec pgSQL: Comment changer le type de zone de texte dans les requêtes SQL?
Afin d'intégrer pgSQL avec VS 2013 J'utilise le logiciel de dotConnect Devart pour PostgreSQL 7.6 Express (la version gratuite)
Cette table particulière a trois colonnes (id, nom, équilibre). En pgSQL le type de colonne pour l'ID est entier, pour le nom est caractère variant et pour l'équilibre est numérique.
Lorsque je teste la recherche par nom, tout fonctionne correctement. Pour les deux autres domaines, je évidemment essayé de changer le type de zone de texte dans la requête SQL en utilisant CType et CInt, mais rien ne fonctionne et je reçois l'erreur:
operator does not exist: integer ~ ~ unknown
Ci-dessous est mon code.
Private Sub btnSearch_Click(sender As Object, e As EventArgs) Handles btnSearch.Click
'creating pgsql connection and query
Dim myQuery As String
Dim pgSqlConnection1 As PgSqlConnection = New PgSqlConnection()
pgSqlConnection1.ConnectionString = "UserId=postgres;Password=***;Host=localhost;Database=postgres;Persist Security Info=True;Initial Schema=public"
'searches according to selected column
If ComboBox1.Text = "customer_name" Then
myQuery = "SELECT customer_id, customer_name, balance FROM account_current WHERE customer_name LIKE '%" & TextBox1.Text & "%'"
Search(myQuery, pgSqlConnection1)
ElseIf ComboBox1.Text = "customer_id" Then
myQuery = "SELECT customer_id, customer_name, balance FROM account_current WHERE customer_id LIKE '%" & CType(TextBox1.Text, Integer) & "%'"
Search(myQuery, pgSqlConnection1)
ElseIf ComboBox1.Text = "balance" Then
myQuery = "SELECT customer_id, customer_name, balance FROM account_current WHERE balance LIKE '%" & CType(TextBox1.Text, Double) & "%'"
Search(myQuery, pgSqlConnection1)
End If
End Sub
Public Sub Search(myQuery As String, pgSqlConnection1 As PgSqlConnection)
'Try statement to show error instead of crashing
Try
pgSqlConnection1.Open()
Dim dt As New DataTable
Dim MyCommand As New PgSqlCommand(myQuery, pgSqlConnection1)
Dim myDataAdapter As New PgSqlDataAdapter(myQuery, pgSqlConnection1)
myDataAdapter.Fill(dt)
DataGridView1.DataSource = dt
pgSqlConnection1.Close()
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
End Sub
Quelqu'un peut-il m'aider avec cela? Excusez toute fausse caractérisation, je suis un débutant. Merci d'avance!
'LIKE' ne fonctionne pas sur les nombres. Cela ne fonctionne qu'avec des valeurs de caractères. Donc 'customer_id LIKE ...' et 'balance LIKE' sont faux (et n'ont pas beaucoup de sens pour moi pour être honnête) –