2016-06-14 16 views
0

Visual Studio 2013(.Net Framework 4.5.1)でpgSQLデータベースを開いて編集するVBフォームを作成しました。ユーザーがテーブルを検索できるようにするために、コンボボックスを作成しました。このコンボボックスから、検索する列を選択してテキストボックスに入力します。 VS 2013でpgSQLのを統合するためにVB.NET with pgSQL:SQLクエリ内のテキストボックスタイプを変更するには?

私は、PostgreSQL 7.6エクスプレス(無料版)のためDevartのソフトウェアキ繝ァ繝ヨを使用

この特定のテーブルには、3つの列(ID、名前、バランスを)持っています。 pgSQLでは、IDの列型はの整数であり、名前はの文字はであり、残高はの数値です。

名前で検索をテストすると、すべて正常に動作します。他の二つのフィールドのために、私は明らかにctype関数とCInt関数を使用して、SQLクエリ内でテキストボックスの種類を変更しようとしましたが、何も機能していないと、私はエラーを取得:以下

operator does not exist: integer ~ ~ unknown

私のコードです。

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 

誰でも私にこれを手伝ってもらえますか? 誤った説明をしないでください、私は初心者です。 ありがとうございます!

+0

「LIKE」は数字では機能しません。文字の値でのみ機能します。だから、 'customer_id LIKE ...'と 'balance LIKE'は間違っている(正直言って私にはあまり意味がない) –

答えて

0

整数でLIKEを使用できるようにするには、クエリでCASTを使用します。

例:あなただけを見て、出始めている場合は、

また
myQuery = "SELECT customer_id, customer_name, balance FROM account_current WHERE customer_id BETWEEN '%" & CType(TextBox1.Text, Integer) & "%' AND '%" & CType(TextBox1.Text, Integer) & "%'" 

:あなたはまた、あなたが2つの数値の間で検索できるようになるそれらの間に使用することができ整数で

myQuery = "SELECT customer_id, customer_name, balance FROM account_current WHERE CAST(customer_id AS TEXT) LIKE '%" & CType(TextBox1.Text, Integer) & "%'" 

Postgres .NETコネクタであるnpgsqlで:http://www.npgsql.org/