天天看點

資料庫Oracle+java web設計中的小問題

  • 1. 圖檔路徑問題,為什麼圖檔不會顯示?
  • 解:在我們想顯示圖檔,并設定路徑的時候,我們一定要注意到,每一個自動産生的jsp檔案中會有這麼一條代碼:<base href="<%=basePath%>" target="_blank" rel="external nofollow" >,這是什麼意思呢?base 标簽的 href 屬性規定頁面中所有相對連結的基準 URL,具體的可以自己網上搜尋,每個jsp檔案對應的href都不同,在jsp檔案中,我們可以使用<!-- --->将這句屏蔽,這時我們便可以用我們熟悉的方式編寫路徑,假設在mytest檔案下有一個html和pic檔案夾,在pic檔案夾下有圖檔1.jpg,在html檔案夾下有test.jsp檔案,如果我們想在裡面顯示1.jpg便可如下編寫:<img src=” ../pic/1.jpg”/> 或是<imgsrc=”<%=basePath%>/pic/1.jpg”>, 不過值得注意的是如果你的jsp檔案中有送出表單操作最好不要屏蔽這條語句,不然會有錯誤提示對應的servlet檔案找不到。
  • 2.如果Oracle資料庫中的某個表中的某個屬性是char型,我如何在Java實作寫入到資料庫中呢?
  • 解:第一種,我們可以改資料庫,把資料類型改為varchar2(); 第二種:如果我非要資料庫裡的資料類型是char型,比如性别就設定為char(1)型,我們知道Java中與資料庫操作相關的PreparedStatement 類是無法直接設定char類型的,這是我們便可以這樣操作,用前面性别的例子,定義PreparedStatement對象psmt 則使用:psmt.setString(2, String.valueOf(manager.getSex())),利用String類的靜态方法便可将字元型資料轉換成字元串資料類型。
  • 3. 如果想從Oracle資料庫中擷取一張表的屬性,而這張表中的屬性是char型,該如何實作呢?
  • 解:與上面的類似,性别屬性,我們在dao包中操作,擷取屬性,但我們知道PreparedStatement 類不支援char類型資料操作,這時我們便可以如下操作:manager.setSex(rs.getString("m_sex").toCharArray()[0]); 其中manager對象對應資料庫中的一張表,通過PreparedStatement獲得的都是String類型,這時我們将其轉換成字元數組,再取字元數組中的第一個就行了
  • 4. 如果想要實作模糊查詢,使用Oracle中的like關鍵字,該如何實作呢?
  • 解:對于關鍵字查詢,我們不能在java中直接使用“select * from HOHonor whereh_name like %?%”,因為這樣就會把其中的“?”當做普通字元,無法實作,我們可以在此句之前先将“%”加上,如:key='%'+key+'%';
  • StringsSql = "select * from HOHonor where h_name like ?";
  • 這樣便可行了,另外可以考慮一下使用轉義字元,我沒有試過。
  • 5. 我如何在jsp頁面将一個文本輸入框設定使使用者無法編輯?
  • 解:使文本框不可編輯,有三種方法方法1: οnfοcus=this.blur()
  • <input type="text" name="input1" value="中國" οnfοcus=this.blur()>
  • 方法2:readonly
  • <input type="text" name="input1" value="中國" readonly>
  • <inputtype="text"name="input1" value="中國"readonly="true">
  • 方法3: disabled
  • <input type="text" name="input1" value="中國" disabled>
  • 本人使用第二種方法,已認證,但使用第三種方法時,文本框中的資料無法通過form表單傳至servlet,這種效果可用于實作系統的自動編号。
  • 6.Oracle中Date資料類型與Java中資料類型的比對問題?
  • 解:我們Oracle資料庫類型中會有Date類型的,那麼我們如何從前台插入一個日期資料到資料庫中呢?Java中
  • 也有對應得Date資料類型,我們可以使用這個類型來實作,不過Java本身不推薦使用,現在來介紹如何使用,我們知道
  • 我們通過HttpServletRequest request在sevlet檔案中獲得jsp頁面中的輸入框中的資料為String類型,我們需要将其轉換成int類型,
  • 如下:Integer.parseInt(request.getParameter("byear")),使用Integer類的parseInt類将String類型轉換成十進制整型。
  • 之後再通過Date類構造一個日期型資料,如下:newDate(Integer.parseInt(request.getParameter("byear")),Integer.parseInt(request.getParameter("bmonth")),Integer.parseInt(request.getParameter("bday")))
  • 此步之後,我們便得到了Date類型的資料,我們輸出卻發現結果有些問題,比如我們在jsp頁面輸入1982-01-01,但通過Date構造之後輸出得到的結果卻是:3882-02-01,這是為什麼?
  • 通過檢視JDK幫組文檔,我們發現Date
  • @Deprecated
  • public Date(int year,
  • int month,
  • int date)
  • 參數:
  • year - 減 1900 的年份。
  • month - 0-11 的月份。
  • date - 一月中 1-31 之間的某一天。
  • 也就是說我們設定的year參數應該用實際的減去1900,另外,它的月份是從0開始,此時我們将原來的語句改為:
  • newDate(Integer.parseInt(request.getParameter("byear"))-1900,Integer.parseInt(request.getParameter("bmonth"))-1,Integer.parseInt(request.getParameter("bday")))
  • 這時便得到正确結果了。