VB.NET与pgSQL:如何在SQL查询中更改文本框类型?

时间:2016-06-14 09:15:26

标签: vb.net postgresql dotconnect

我在Visual Studio 2013(.Net Framework 4.5.1)上编写了一个VB表单,用于打开和编辑pgSQL数据库。为了使用户能够搜索表格,我创建了一个组合框,用户可以从中选择要搜索的所需列,然后在文本框中输入他要搜索的值。

为了将pgSQL与VS 2013集成,我使用Devart的软件dotConnect for PostgreSQL 7.6 Express(免费版)

此特定表有三列(id,name,balance)。在pgSQL中,id的列类型是 integer ,因为name是字符变化,而balance是 numeric

当我按名称测试搜索时,一切正常。对于其他两个字段,我显然尝试使用CType和CInt更改SQL查询中的文本框类型,但没有任何作用,我收到错误:

  

运算符不存在:整数~~未知

以下是我的代码。

import java.awt.EventQueue;
import java.awt.GridLayout;
import java.text.DecimalFormat;
import javax.swing.JButton;
import javax.swing.JFormattedTextField;
import javax.swing.JFrame;
import javax.swing.text.DefaultFormatterFactory;
import javax.swing.text.NumberFormatter;

/**
 * @see http://stackoverflow.com/a/37807744/230513
 */
public class Test {

    private void display() {
        JFrame f = new JFrame("Test");
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.setLayout(new GridLayout(0, 1));

        JFormattedTextField ccyTxt = new JFormattedTextField();
        DecimalFormat ccyTxtFormat = (DecimalFormat) DecimalFormat.getNumberInstance();
        ccyTxtFormat.setMaximumIntegerDigits((int) 13);
        ccyTxtFormat.setMaximumFractionDigits((int) 5);
        ccyTxtFormat.setMinimumIntegerDigits(0);
        ccyTxtFormat.setMinimumFractionDigits(0);
        NumberFormatter ccyTxtFormatter = new NumberFormatter(ccyTxtFormat);
        ccyTxtFormatter.setAllowsInvalid(true);
        DefaultFormatterFactory CcyTxtDecimalFormatterFactory = new DefaultFormatterFactory(ccyTxtFormatter);
        ccyTxt.setFormatterFactory(CcyTxtDecimalFormatterFactory);
        ccyTxt.setColumns(12);

        f.add(ccyTxt);
        f.add(new JButton("Button"));
        f.pack();
        f.setLocationRelativeTo(null);
        f.setVisible(true);
    }

    public static void main(String[] args) {
        EventQueue.invokeLater(new Test()::display);
    }
}

任何人都可以帮我吗? 请原谅任何错误描述,我是新手。 提前致谢!

1 个答案:

答案 0 :(得分:0)

在查询中使用CAST,以便能够将LIKE与整数一起使用。

示例:

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

使用Integer,您还可以使用BETWEEN,它可以搜索两个数字:

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

另外,如果您刚刚开始,请查看npgsql,它是Postgres .NET连接器:http://www.npgsql.org/