LIKE语句在Java SQL Prepared语句中不起作用

时间:2014-02-07 23:53:13

标签: java sql sql-like statements

我正在为SQL数据库创建Java接口。我正在使用预准备语句来执行搜索查询,但它们只能使用“=”语句而不能使用LIKE语句。

使用“=”的第一个示例代码成功运行。使用LIKE语句的第二个示例不起作用,只返回空。

WORKS:

    PreparedStatement SearchQuery = con.prepareStatement("Select * From Alumnus_A Where aFirstName = ? ORDER BY aLastName asc");  
    SearchQuery.setObject(1, FirstName); 
    ResultSet rs=SearchQuery.executeQuery();

不工作:

    PreparedStatement SearchQuery = con.prepareStatement("Select * From Alumnus_A Where aFirstName LIKE ? ORDER BY aLastName asc");  
    SearchQuery.setObject(1, FirstName); 
    ResultSet rs=SearchQuery.executeQuery();

非常感谢任何帮助,如果你能解释一下我记得我是Java的新手并且还没有很多编程经验。

我的搜索按钮代码的其余部分:

private void button_SearchActionPerformed(java.awt.event.ActionEvent evt) {

    String FirstName = textField_FirstName.getText();
    String LastName = textField_LastName.getText();


    try
    {
        Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
        Connection con=DriverManager.getConnection("jdbc:odbc:Alumni_DB");
        Statement st=con.createStatement();
        con.commit();


       System.out.print(FirstName + " ");


       PreparedStatement SearchQuery = con.prepareStatement("Select * From Alumnus_A Where        aFirstName LIKE ? ORDER BY aLastName asc");


       SearchQuery.setString(1, FirstName);


       ResultSet rs=SearchQuery.executeQuery();
       String aUID="",aFName="",aLName="",aMInitial="",aHomePhone="",aCellPhone="";

       while(rs.next())
        {
            aUID=rs.getString(1);
            aFName=rs.getString(2);
            aLName=rs.getString(3);
            aMInitial=rs.getString(4);
            aHomePhone=rs.getString(5);
            aCellPhone=rs.getString(6);
            System.out.println("UID " + aUID + "  First Name " + aFName + "   Last Name     " + aLName + "   Middle Initial " + aMInitial + "   Home Phone   " + aHomePhone
                    + "   Cell Phone " + aCellPhone);
        }
    }
    catch(Exception e)
    {
        System.out.println(e);
    }

}

注意:前缀为“a”的任何内容都指的是数据库列

0 个答案:

没有答案