如何进行MySQL实施JDBC 2.0/3.0 的新特性实践

46次阅读
没有评论

共计 2115 个字符,预计需要花费 6 分钟才能阅读完成。

这篇文章将为大家详细讲解有关如何进行 MySQL 实施 JDBC 2.0/3.0 的新特性实践,文章内容质量较高,因此丸趣 TV 小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

昨天一天都没有调试出上传图像到数据库中的程序,虽然查了 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= multipart/form-data

加入该属性后,该表单就不能再同时作为传输其他数据字段的表单了,如不能再传送串字段。
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、对自动增量的字段插入记录编程按上述步骤赋新值还要考虑的问题?
我认为要考虑为记录上锁,否则仍有出现异常的潜在问题。

关于如何进行 MySQL 实施 JDBC 2.0/3.0 的新特性实践就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-07-19发表,共计2115字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)