由於前幾天在處理家裡的事情,
所以暫時沒作專題.
這裡拜預計先看一些rss的資料,
接下來就要把每個商家的商品列表都作成rss來給買家訂閱查詢.
另外發現如果使用到有關時間的函式的話,
似乎會造成雖然有存檔,
但是在測試網頁時ie仍然會使用舊的檔案,
要把資料夾或檔案的名稱改過後才會正常.
2009年5月6日 星期三
2009年4月30日 星期四
2009年4月28日 星期二
商品到期機制的資料刪除(5/8修改)
原本我的商品到期以後只有設定顯示商品到期,
但是後來加入到期後刪除資料的地方卻發生錯誤,
while(rs.next)
{
int id=rs.getint(article_id);
...
if(設定時間==目前時間)
{
stmt.executeUpdate("delete from time where article_id=id;");
}
}
發生錯誤的地方如上,
如果以這樣方式的話,
在刪除一筆資料時不會錯誤,
但如果有多筆資料的設定時間都一樣時,
刪除第一筆完後就會發生錯誤,
我猜測的原因是因為當刪除時,
rs的指標會因為在刪除第一筆資料後,
檢查下一筆時因為同樣需要刪除,
導致指標可會指向錯誤而發生錯誤.
(後來確定是由於是使用同一個STMT,
所以當我刪除以後就會失去的原本的資料)
而我原本設計成如果到期,
則跳到另一個網頁刪除後再跳回,
想不到同樣會出現錯誤,
而最後我就想直接從rs的地方下手,
上網搜尋了以後發現了rs.deleteRow()函式,
此函是可以直接把目前rs指標指向的資料整筆刪除,
不過一開始要把stmt的rs權限設定為CONCUR_UPDATABLE,
讓它可以去改資料庫的內容,
然後把程式碼改成:
while(rs.next)
{
...
if(設定時間==目前時間)
{
rs.deleteRow()
}
}
這樣就可以直接把到期的商品資料做刪除的動作了.
但是後來加入到期後刪除資料的地方卻發生錯誤,
while(rs.next)
{
int id=rs.getint(article_id);
...
if(設定時間==目前時間)
{
stmt.executeUpdate("delete from time where article_id=id;");
}
}
發生錯誤的地方如上,
如果以這樣方式的話,
在刪除一筆資料時不會錯誤,
但如果有多筆資料的設定時間都一樣時,
刪除第一筆完後就會發生錯誤,
我猜測的原因是因為當刪除時,
rs的指標會因為在刪除第一筆資料後,
檢查下一筆時因為同樣需要刪除,
導致指標可會指向錯誤而發生錯誤.
(後來確定是由於是使用同一個STMT,
所以當我刪除以後就會失去的原本的資料)
而我原本設計成如果到期,
則跳到另一個網頁刪除後再跳回,
想不到同樣會出現錯誤,
而最後我就想直接從rs的地方下手,
上網搜尋了以後發現了rs.deleteRow()函式,
此函是可以直接把目前rs指標指向的資料整筆刪除,
不過一開始要把stmt的rs權限設定為CONCUR_UPDATABLE,
讓它可以去改資料庫的內容,
然後把程式碼改成:
while(rs.next)
{
...
if(設定時間==目前時間)
{
rs.deleteRow()
}
}
這樣就可以直接把到期的商品資料做刪除的動作了.
2009年4月26日 星期日
本週進度
我本週預計先協助組員將每個商家的物品列表完成,
完成以後就可以開始設計商家RSS訂閱系統,
目前整組除了使用者方面的進度比較慢以外,
而商品和搜尋部分都很順利進行中,
較複雜的RSS和GOOGLE MAP部分也應該很快就可以開始進行.
完成以後就可以開始設計商家RSS訂閱系統,
目前整組除了使用者方面的進度比較慢以外,
而商品和搜尋部分都很順利進行中,
較複雜的RSS和GOOGLE MAP部分也應該很快就可以開始進行.
商品到期機制
由於商家和上傳商品的部分尚未整合好,進階搜尋也已經完成,所以我就開始設計商品到期機制.
這個部分不難,主要的問題在於如何得到上傳商品的時間,
而這個功能可以用Calendar.getInstance()來得到系統目前時間,
不用像getyear()、getmonth()這樣分開來抓資料,
例如,
Calendar c=Calendar.getInstance( );
c.get(Calendar.YEAR);
可取得年.
又例如,
c.get(Calendar.MONTH);
可取得月.
所以我上傳商品的就寫入目前的時間和限制的日數,
然後當有使用者查看商品時,
就將上傳時的時間加上限制日數,
和查看時的時間來做比較,
如果相同就顯示商品到期,
不同就給予查看.
另外Calendar.getInstance()的詳細用法和欄位常數可以看這投影片:
點我!!!
這個部分不難,主要的問題在於如何得到上傳商品的時間,
而這個功能可以用Calendar.getInstance()來得到系統目前時間,
不用像getyear()、getmonth()這樣分開來抓資料,
例如,
Calendar c=Calendar.getInstance( );
c.get(Calendar.YEAR);
可取得年.
又例如,
c.get(Calendar.MONTH);
可取得月.
所以我上傳商品的就寫入目前的時間和限制的日數,
然後當有使用者查看商品時,
就將上傳時的時間加上限制日數,
和查看時的時間來做比較,
如果相同就顯示商品到期,
不同就給予查看.
另外Calendar.getInstance()的詳細用法和欄位常數可以看這投影片:
點我!!!
2009年4月22日 星期三
==和 java.lang.String.equals()的不同
因為有時判斷的時候明明==的意思是正確的,但是依然會出現錯誤,所以我就放上這一篇做參考
轉載自:http://www.javaworld.com.tw/jute/post/view?bid=29&id=9578&sty=3&age=0&tpg=1&ppg=1
當比較兩個字串(String)時,使用 '==' 運算子和 java.lang.String.equals()這個
method有什麼不同呢?
'=='這個運算子會看看這兩個字串的references是不是指向同一個字串object。而
java.lang.String.equals()這個method則會比較這兩個字串的"值"是不是一樣的。換句
話說,比較這兩個字串是不是有相同的字元序列。
當使用String literals(一串被雙引號括住的字元)時,使用 '=='運算子和使用equals
method 的結果會是一樣的。所有的String literals都是指向同一個String 類別的
instances。系統中有一個pool,當有新的String literals出現時,系統會先去檢查pool
之中,是不是已經存在一個和這個新的String literals有相同內容的物件。如果存在,
則會傳回一個指向這個此物件的reference。若不存在,則會將此String literals放到
pool中,然後傳回這個物件的reference。
舉個例子:
String s1 = "hello";
String s2 = "hell"+"o";
System.out.println("Using equals op"+ (s1==s2)); //True
System.out.println("Using equals method" + (s1.equals(s2))); //True
當字串是由"new"這個關鍵字所造出來的時候,則不是這麼一回事。
String s3 = new String("hello");
String s4 = new String("hello");
System.out.println("Using equals op" + (s3==s4)); //False
System.out.println("Using equals method" + (s3.equals(s4))); //True
傳用"new"這個關鍵字時,會造出兩個不同的物件,所以會有兩個不同的references,即
使在底層的string literal是一樣的。在上面的例子中,'=='運算子傳回false,因為兩
個references是不同的。而equals method則傳回true,因為這兩個物件所代表是同樣的
字元序列。
轉載自:http://www.javaworld.com.tw/jute/post/view?bid=29&id=9578&sty=3&age=0&tpg=1&ppg=1
當比較兩個字串(String)時,使用 '==' 運算子和 java.lang.String.equals()這個
method有什麼不同呢?
'=='這個運算子會看看這兩個字串的references是不是指向同一個字串object。而
java.lang.String.equals()這個method則會比較這兩個字串的"值"是不是一樣的。換句
話說,比較這兩個字串是不是有相同的字元序列。
當使用String literals(一串被雙引號括住的字元)時,使用 '=='運算子和使用equals
method 的結果會是一樣的。所有的String literals都是指向同一個String 類別的
instances。系統中有一個pool,當有新的String literals出現時,系統會先去檢查pool
之中,是不是已經存在一個和這個新的String literals有相同內容的物件。如果存在,
則會傳回一個指向這個此物件的reference。若不存在,則會將此String literals放到
pool中,然後傳回這個物件的reference。
舉個例子:
String s1 = "hello";
String s2 = "hell"+"o";
System.out.println("Using equals op"+ (s1==s2)); //True
System.out.println("Using equals method" + (s1.equals(s2))); //True
當字串是由"new"這個關鍵字所造出來的時候,則不是這麼一回事。
String s3 = new String("hello");
String s4 = new String("hello");
System.out.println("Using equals op" + (s3==s4)); //False
System.out.println("Using equals method" + (s3.equals(s4))); //True
傳用"new"這個關鍵字時,會造出兩個不同的物件,所以會有兩個不同的references,即
使在底層的string literal是一樣的。在上面的例子中,'=='運算子傳回false,因為兩
個references是不同的。而equals method則傳回true,因為這兩個物件所代表是同樣的
字元序列。
2009年4月19日 星期日
本週進度
由於前兩個禮拜是期末考時間,
所以沒有進度.
另外這週我本來想要做有關商品資料修改的部分,
但是考慮會關係到如果可以修改的話會影響到買家的權益,
例如說有人下標後商家修改內容等,
所以這部分先不做,
改做商品的進階搜尋.
所以沒有進度.
另外這週我本來想要做有關商品資料修改的部分,
但是考慮會關係到如果可以修改的話會影響到買家的權益,
例如說有人下標後商家修改內容等,
所以這部分先不做,
改做商品的進階搜尋.
訂閱:
文章 (Atom)