访问数据库无法执行 SQL LIKE

Posted

技术标签:

【中文标题】访问数据库无法执行 SQL LIKE【英文标题】:access database cannot execute SQL LIKE 【发布时间】:2017-07-02 00:14:28 【问题描述】:

我无法从我的数据库中查询记录,并收到“UCAExc:::4.0.2 Invalid argument in JDBC call: parameter index out of range: 1”错误消息

这是如何引起的,我该如何解决?

    public void  query()
    String name = name_tt.getText();
    DefaultTableModel model= new DefaultTableModel();
    JScrollPane scrollPane = new JScrollPane();
    scrollPane.setBounds(0, 283, 555, 212);
    contentPane.add(scrollPane);

    table = new JTable(model);
    scrollPane.setViewportView(table);
    model.addColumn("ID");
    model.addColumn("IDs");
    model.addColumn("Name");
    try
    
        PreparedStatement pst = con.prepareStatement("SELECT * FROM TEST 
        WHERE IDs LIKE '?*' ");
        pst.setString(1, name);
        ResultSet rs = pst.executeQuery();
        while(rs.next())
        
            model.addRow(new Object[]rs.getInt(1),rs.getString(2),rs.getInt(3));
        

    
    catch(Exception e)
        System.out.println(e.getMessage());

    ;

 

【问题讨论】:

【参考方案1】:

你需要做的

PreparedStatement pst = con.prepareStatement("SELECT * FROM TEST WHERE IDs LIKE ?");
pst.setString(1, name + "*");
ResultSet rs = pst.executeQuery();

这样,参数占位符? 是基本SQL 语句的一部分,而不是SQL 语句中字符串文字 的一部分。

【讨论】:

以上是关于访问数据库无法执行 SQL LIKE的主要内容,如果未能解决你的问题,请参考以下文章

如何在firebase上执行sql“LIKE”操作?

sql server service broker中调用存储过程执行跨库操作,不管怎么设置都一直提示 服务器主体 "sa" 无法在当前安全上下文下访问数据库 "dbnam

在 R 语言中使用“like”语句执行 SQL

SQL 还原或备份失败数据库变成单个用户模式无法访问

带有 Like 语句的 MS-Access 上的 SQL 请求似乎永远无法正常工作

sql server 2000服务管理器 服务:拒绝访问。发生错误5-(拒绝