我在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);
}
}
任何人都可以帮我吗? 请原谅任何错误描述,我是新手。 提前致谢!
答案 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/