【问题标题】:Array and date format issue数组和日期格式问题
【发布时间】: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) 吗?

标签: java servlets


【解决方案1】:

尝试改变

String[] myArray =request.getParameterValues("item");

String[] myArray =request.getParameterValues("item[]"); //brackets must be specified to retrive array value

【讨论】:

    猜你喜欢
    • 2011-09-20
    • 2014-04-01
    • 1970-01-01
    • 2016-06-26
    • 1970-01-01
    相关资源
    最近更新 更多