国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

MySQL實施JDBC 2.0/3.0 API的新特性學習實踐

2019-11-18 14:49:39
字體:
來源:轉載
供稿:網友

  --在jsp+MySQL+Resin+win2000環境下實施網絡程序開發筆記

  [序] 昨天一天都沒有調試出上傳圖像到數據庫中的程序,雖然查了CSDN,但所查資料都不好使。今天想起了幾個要害點沒有仔細的試到,主要是JDBC API新功能到底對MySql有沒有作用,假如不行,為什么MySQL Driver包中的ResultSet類中有新的API方法?另外,upload包的幾個類對添加圖像到數據庫中到底行不行。不管行還是不行,我得再仔細試一下。因昨天曾測試通過了JDBC API新的更新方法,所以計劃今天先調試上傳圖像到數據庫中程序,經過一小段時間的調試,終于通過,調用圖像顯示程序一試,圖像出來了,試試jpg格式的圖像,也成功了,真是大快人心。數據庫保存圖像功能調試成功為我調試JDBC API新的插入功能增加了信心,幾經周折也成功了,為了記住這一過程,我想想還是寫下來。

  原定目標:通過網絡,把客戶端的gif或jpg圖像文件存到服務器端的MySQL數據庫中。
  設計思路:做一個供客戶使用的表單,客戶通過該表單可查找客戶端的圖像文件,并提取該文件的文件名于表單輸入框中。客戶提交表單后,將激活服務器端的insertpic.jsp,通過insertpic.jsp保存圖像文件的數據到數據庫中。
  在實施過程中又碰到和攻克了新的難題:JDBC新的API插入、更新、刪除指令如何使用;upload包如何使用,學習和演示了《java Servlets編程指南》上提供的連接池,圖像顯示程序。
  具體編程思路、碰到的問題,小結:
  1、數據庫表名:javadoc;保存圖像數據的字段用Blob或MediumBlob或LongBlob類型的。
  建立數據表的SQL語句如下:

  SQL = "CREATE TABLE javadoc (" +
    "gid int(11) NOT NULL auto_increment," +
    "gheading varchar(100)," +
    "gimage longblob," +
    "PRIMARY KEY (gid))";

  2、表單上的查找并提取圖像文件名的輸入框用下面的語句實現:
    

圖像


  3、表單的
要加入下面的屬性和屬性值:
    enctype="mult  加入該屬性后,該表單就不能再同時作為傳輸其他數據字段的表單了,如不能再傳送串字段。
  4、啟用upload包,內含File.class、Files.class、Request.class、SmartUpload.class、SmartUploadException.class,來協助保存圖像,以降低開發難度。
  幾個類的原代碼見相關文件,File類公用方法已粘在相關的jsp文件中。
  5、JDBC新的API插入、更新、刪除功能,具體步驟如下:
  插入一個記錄的步驟:
    (1)預備一個空記錄:MoveToInsertRow();
    (2)填入數據:updateXXX();
    (3)實施插入:insertRow();
  更新一個記錄步驟:
    (1)定位記錄:用absolute()或relative()等方法;
    (2)填入新值:updateXXX();
    (3)實施更新:updateRow();
  刪除一個記錄的步驟:
    (1)定位記錄:用absolute()或relative()等方法;
    (2)實施刪除:deleteRow();
  6、插入數據碰到的問題:我在保存圖像的表中設計了一個自動增量的gid字段,并定義為NOT NULL。在通常用SQL語句插入新值的情況下,可以忽略對該字段插值,數據庫會自動賦值。但在使用JDBC API插入記錄的過程中發現,對該字段不能不管,必須調用rs.updateLong("gid" ..)賦值,否則系統會出現異常。我也想到并試過申請一個不包含該字段的游標,然后對該游標執行上面的幾個插入記錄的步驟,但也出現異常。另外,我的表中還有一個gheading的字段,該字段缺省值沒定義,建立一個不包含該字段的游標然后執行插入新記錄的操作是可以通過的,即執行插入操作對gheading這類字段可以忽略不用管它。由此我推斷,只要是被說明為NOT NULL的字段,你在使用JDBC新的API進行插入記錄編程時不能忽略它,必須要顯式的賦值,否則系統會出現異常。
  7、對自動增量的字段在進行插入記錄編程時如何為其賦新值?
  我的方案是這樣:
  (1)使用select * form tablename order by gid 申請游標,其中gid為自動增量并不能為NULL的字段,為了簡單,假設該游標不會為空;
  (2)對游標last()一下,到游標的底部;
  (3)取gid字段的值賦給一個臨時變量mid;
  (4)mid++;
  (5)對gid字段實行 updateLong("gid",mid);
  ...
  8、對自動增量的字段插入記錄編程按上述步驟賦新值還要考慮的問題?
  我認為要考慮為記錄上鎖,否則仍有出現異常的潛在問題。
  今天就到此為止吧。(颯龍)

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 嵩明县| 江华| 柘荣县| 内黄县| 宿州市| 日土县| 贵港市| 隆尧县| 荥经县| 长岭县| 周宁县| 库伦旗| 冀州市| 普格县| 黔东| 浪卡子县| 萨嘎县| 崇仁县| 塔河县| 陵水| 泸州市| 东宁县| 师宗县| 民勤县| 济源市| 肇庆市| 习水县| 个旧市| 巢湖市| 修水县| 泸西县| 三门峡市| 沁阳市| 太湖县| 全椒县| 小金县| 昌宁县| 聂荣县| 广河县| 新竹市| 抚顺县|