Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 带通配符的Prepared语句不返回某些行,但查询返回所有行?_Java_Sql_Sql Server_Sql Server 2008_Jdbc - Fatal编程技术网

Java 带通配符的Prepared语句不返回某些行,但查询返回所有行?

Java 带通配符的Prepared语句不返回某些行,但查询返回所有行?,java,sql,sql-server,sql-server-2008,jdbc,Java,Sql,Sql Server,Sql Server 2008,Jdbc,我正在使用JTDS作为连接到SQL server的驱动程序 以下是给我带来问题的查询: SELECT EmpID,FirstName,LastName,CompanyName,DepartmentName,JobTitle,HireDate FROM Employees where UPPER(FirstName) LIKE 'KEVIN%' 它在SQL Server上返回2行。一个大写字母为“KEVIN”,另一个大写字母为“KEVIN”。我使用通配符来确保两个结果都得到。在我的Employe

我正在使用JTDS作为连接到SQL server的驱动程序

以下是给我带来问题的查询:

SELECT EmpID,FirstName,LastName,CompanyName,DepartmentName,JobTitle,HireDate FROM Employees where UPPER(FirstName) LIKE 'KEVIN%'
它在SQL Server上返回2行。一个大写字母为“KEVIN”,另一个大写字母为“KEVIN”。我使用通配符来确保两个结果都得到。在我的EmployeeDAO课程中,我使用了以下内容:

        ps = con.prepareStatement("SELECT EmpID,FirstName,LastName,CompanyName,"
                + "DepartmentName,JobTitle,HireDate FROM Employees WHERE UPPER(FirstName) LIKE ?");
        ps.setString(1, FirstName + "%");
        rs = ps.executeQuery();
然后我当然把凯文放在我的主打位置上。它只返回一行,即“Kevin”行


如何修复此问题,使其返回所有行?

SQL Server安装的默认排序规则为SQL\u拉丁1\u常规\u CP1\u CI\u AS,不区分大小写

更改查询的排序规则:

SELECT Col1
FROM Table1
WHERE Col1 COLLATE Latin1_General_CS_AS LIKE 'KEVIN%'

您的查询看起来不错,不过我会在设置参数值之前将其大写,以使其更健壮。问题在于如何从结果集中收集行。很可能您只是简单地用下一行覆盖上一行,这样您就只能得到集合中最后一行。

您是如何从ResultSet中收集行的?问题很可能就在这里。您是否尝试过:选择EmpID、FirstName、LastName、CompanyName、DepartmentName、JobTitle、HireDate,这些名称都来自于像上面的“KEVIN%”这样的雇员。下一步{v.addnew Employeers.getIntEmpID、rs.getStringFirstName、rs.getStringLastName、rs.getStringCompanyName、rs.getStringDepartmentName、rs.getStringJobTitle、rs.getStringHireDate;}RS是结果集,v是向量顺便问一下,你有没有试过ps.setString,“+FirstName+%”和quoteYea,考虑到jdbc为我们处理单引号和转义,这应该不会有什么区别你是对的,但我收集的行很好。我是在显示中出错的。如果有什么问题,可以称之为大脑放屁,但我运行了一个for循环并在1处启动了计数器变量。再次感谢。遗憾的是,由于某些原因,我正在开发的SQL Server实际上是区分大小写的,因为我的查询不返回大写值,这就是为什么我必须这样做的原因。