技术开发 频道

为DB2 XML数据开发Java应用程序

    插入文件时进行验证

    插入 XML 文件时进行验证只需要很少的附加编程工作。假设您已经创建并注册 "DB2 Viper 快速入门"(developerWorks,2006 年 3 月)中讨论的 ClientInfo.xsd 文件,那么您只需要修改 清单 3 中的一行代码,以指示 DB2 插入 XML 文件时进行验证。该代码涉及到 query 字符串的定义。

    如 清单 4 所示,修订后的 INSERT 语句在为 XML 数据指定参数标志符之前调用 XMLValidate 函数。该函数也需要您指定将用于验证的 XML 模式标识符。在这里,引用的是前面注册的一个叫做 "user1.mysample" 的模式。

    清单 4. 从文件插入 XML 数据时进行验证 

String query = "INSERT INTO clients (id, name, status contactinfo) " + "VALUES (?, ?, ?, xmlvalidate(? according to xmlschema id user1.mysample))";

    如果您的 XML 输入文件包含根据指定模式来说有效的数据,那么 DB2 就会插入行。否则,整个语句失败,不会插入该行的数据。

    插入字符串时不进行验证

    清单 5 中所示的 insertString() 方法展示了如何将分配给字符串变量的格式良好的 XML 文档插入 DB2 中。逻辑与前一例子中从文件插入数据时的逻辑没有太大的不同。不是使用您的准备语句的 setBinaryStream() 方法,而是使用 setString() 方法。本例中为了简单起见,xml 变量定义中的 XML 文档已经进行了硬编码。

    注意:转义字符(反斜杠)包含在是 XML 文档一部分的引号之前(比如下面例子中的 XML 版本号)。

    清单 5. 从字符串插入 XML 数据

public static void insertString(){ try { // for simplicity, I've defined variables with input data int id = 1885; String name = "Amy Liu"; String status = "Silver"; String xml = "<?xml version=\"1.0\"?>" + "<Client>" + "<Address> " + "<street>54 Moorpark Ave.</street>" + "<city>San Jose</city>" + "<state>CA</state>" + "<zip>95110</zip>" + "</Address>" + "<phone>" + "<work>4084630110</work>" + "<home>4081114444</home>" + "<cell>4082223333</cell>" + "</phone>" + "<fax>4087776688</fax>" + "<email>sailer555@yahoo.com</email>" + "</Client>"; // get a connection Connection conn = Conn.getConn(); // define string that will insert file without validation String query = "insert into clients (id, name, status, contactinfo) values (?, ?, ? ,?)"; // prepare the statement PreparedStatement insertStmt = conn.prepareStatement(query); insertStmt.setInt(1, id); insertStmt.setString(2, name); insertStmt.setString(3, status); insertStmt.setString(4, xml); // execute the statement if (insertStmt.executeUpdate() != 1) { System.out.println("No record inserted."); } . . . conn.close(); } catch (Exception e) { . . . } }

    插入字符串时进行验证

    正如您所预期的,验证作为字符串提供的 XML 文档只需要很少的额外编程工作。实际上,只需要修改一行代码 —— query 变量的定义。只需要将 INSERT 语句更改为调用 XMLValidate 函数,就像在 清单 4 中所做的一样。

    下面是修订后的语句:

    清单 6. 从字符串插入 XML 数据时进行验证 

String query = "INSERT INTO clients (id, name, status contactinfo) " + "VALUES (?, ?, ?, xmlvalidate(? according to xmlschema id user1.mysample))";
0
相关文章