2011-07-09 30 views
0

我正在寫一個報告,以從MySQL數據庫中獲取結果。查詢在mysql數據庫中有一個int類型的參數。我定義了一個java.lang.Integer類型的參數,但是當我運行報告並給它一個值時,它不返回任何數據。我試圖將參數類型更改爲String,然後得到不正確的結果。以下是報告查詢:賈斯珀報告參數返回錯誤的結果

SELECT 
    orders.`number` AS orders_number, 
    orders.`length` AS orders_length, 
    orders.`thick` AS orders_thick, 
    orders.`date` AS orders_date, 
    orders.`weight` AS orders_weight 
FROM 
    `orders` orders 
WHERE 
    orders.`customer_id` = $P{cust_id} 

,這裏是訂單表模式:

CREATE TABLE `orders` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `customer_id` int(11) DEFAULT NULL, 
    `number` double DEFAULT NULL, 
    `length` double DEFAULT NULL, 
    `thick` int(11) DEFAULT NULL, 
    `weight` double DEFAULT NULL, 
    `date` date DEFAULT NULL, 
    PRIMARY KEY (`id`), 
    KEY `customer_fk` (`customer_id`) 
) ENGINE=InnoDB AUTO_INCREMENT=38 DEFAULT CHARSET=utf8$ 

感謝,

回答

0

嘗試切換$P{}語法$P!{}。如,

WHERE 
    orders.`customer_id` = $P!{cust_id} 

碧玉一般由查詢轉換爲Java PreparedStatement對象,然後設置使用對象的方法的參數工作。在查詢轉換爲對象之前,$P!{}語法將執行參數替換。