【发布时间】:2014-02-20 06:08:46
【问题描述】:
我是 jquery 和 java 的初学者。我有两个字符串变量和一个字符串数组。我使用来自 javascript 的 post 请求将这 3 个传递给 java servlet。下面是代码:
var stDate= $('#drpstart').jqxDateTimeInput('getText');
var edDate= $('#drpend').jqxDateTimeInput('getText');
var items = $("#target").jqxListBox('getItems');
var itemsid=[];
$("#jqxWidget").html('');
for (var i = 0; i < items.length; i++) {
itemsid[i]=items[i].value;
}
$.post('ActionItem',
{startdt:stDate,enddt:edDate,item:itemsid},function(responseJson) {
});
然后我在 servlet 端访问这些变量和数组:
String starts=request.getParameter("startdt");
String ends=request.getParameter("enddt");
String[] myArray =request.getParameterValues("item");
if (myArray != null ) {
for (int i = 0; i < myArray.length; i++){
System.out.println(myArray[i]);
}
}
else {
System.out.println("null value");
}
但是 myarray 得到一个空值。如何将值正确地获取到 myarray? 此外,我的数据库表 StockRegisterHeader 包含字段“日期”,日期为数据类型,因此我将字符串变量开始和结束转换为日期格式,如下所示
SimpleDateFormat from = new SimpleDateFormat("dd/MM/yyyy");
SimpleDateFormat to = new SimpleDateFormat("yyyy-MM-dd");
Date startg = from.parse(starts); // 01/02/2014
Date endg = from.parse(ends);
现在我需要从这个日期范围内的 4 个表中选择数据。我写的查询如下:
String ss="SELECT Items.ParentID,Items.Name ,StockRegisterHeader.MovementType,
StockRegisterHeader.Date, UOM.Name,StockRegisterDetails.Quantity,
StockRegisterDetails.Rate from Items,StockRegisterHeader,UOM,StockRegisterDetails
where Items.ID = StockRegisterDetails.ItemID and
StockRegisterDetails.StockRegisterHeaderID = StockRegisterHeader.Id and
StockRegisterDetails.UOMID = UOM.ID and StockRegisterHeader.Date between '"+startg+"'
and '"+endg+"'";
rs=stmt.executeQuery(ss);
但即使数据库包含请求的数据,结果集对象 rs 也显示为空。我认为这可能是由于日期格式。如何解决这两个问题?我正在使用mysql数据库。请帮我。
【问题讨论】:
-
1/显式连接 2/preparedStatement,你应该对这两个主题做一些研究
-
您需要使用相同的 SimpleDateFormat 开始和结束,然后在查询中也使用 To_char(Date) 方法生成相同的格式然后比较
-
preparestatement 在我的程序中并不重要。因为以后我需要根据 myarray 值更改选择查询。也就是说我需要使用循环进行查询。我认为preparestatements 在循环来时无效
-
@user3231725 从数据库中检索我们使用
while(rs.next()){....},但您没有显示代码 -
@Naren 你是说我的查询中的 To_char(StockRegisterHeader.Date) 吗?