Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/81.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.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
带servlet的动态SQL_Sql_Sql Server - Fatal编程技术网

带servlet的动态SQL

带servlet的动态SQL,sql,sql-server,Sql,Sql Server,我有一个名为DBChart的servlet映射到url/db。该servlet根据此处使用的sql查询输出一些数据 我所拥有的: 在客户端,我正在进行如下ajax调用: $.ajax({ type : 'POST', async: false, url : 'http://localhost:8080/DBCHART/db', success : function(da

我有一个名为
DBChart
的servlet映射到url
/db
。该servlet根据此处使用的sql查询输出一些数据

我所拥有的:

在客户端,我正在进行如下ajax调用:

$.ajax({
                type : 'POST',
                async: false,
                url : 'http://localhost:8080/DBCHART/db',
                success : function(data) {/*some code*/})
在服务器端,一个静态查询显示:

String sql ="select * from Employee"
我想要什么: 我希望能够在此传递一些参数,如:

url: http://localhost:8080/DBCHART/db?Name = 'xyz'?Age = 21
在服务器端,本例中的查询应为:

select * from Employee where Name ='xyz' and Age = 21 
i、 e仅当提供了这些参数时,否则应保持不变

select * from Employee

我能为高效地创建动态sql提供一些指导吗?

假设在本例中,您使用varName作为'xyz',varAge作为21 ----姓名='xyz'?年龄=21岁

您可以使用这样的逻辑(思考要点:其中1=1)


这个答案是正确的,但由于安全问题,它是有缺陷的。它提到了参数化查询,但代码示例没有使用它们。该示例极易受到注入攻击-1@JoelCoehoorn:我如何克服这些漏洞?请问我可以在这个方向上做些什么吗?@Raushan:我如何从url字符串中去掉varName和varAge?我给出的代码只是给你一个逻辑,如何继续。您必须使用参数化查询来实现它,否则它容易受到sql注入的攻击。请参阅此java文档以了解参数化查询()。。。对于查询字符串,您可以从这里获取详细信息[
string sqlQuery = " select * from Employee where 1 = 1 ";

if(null != varName && !varName.isEmpty())){
   // add criteria for Name
   sqlQuery += " AND Name = '"+ varName + "'"; // TODO: use parametrized query
}

if(null != varAge && varAge > 0){
    // add criteria for Age
   sqlQuery += " AND Age = "+ varAge ;  // TODO: use parametrized query
}