接着上一次的AJAX for Java简单表数据查询实例,本例将实现一个AJAX for Java的简单数据提交(增加,删除,修改)操作,这个例子是单表操作,也可以实现主从表的数据提交。<o:p></o:p>
用AJAX WebShop打开上次的例子工程java_example.wpj,选择File->New Java Service,从左边的工程树中选择demo/Simple.Java文件打开:<o:p></o:p>
<o:p></o:p>
在代码中找到update_XML方法,它的代码如下:<o:p></o:p>
<o:p> </o:p> public class Simple extends BusinessObjectBean {<o:p></o:p> String drivers = "sun.jdbc.odbc.JdbcOdbcDriver";<o:p></o:p> String url = "jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=database/demo.mdb";<o:p></o:p> String tablename = "product";<o:p></o:p> String username = "";<o:p></o:p> String password = "";<o:p></o:p> <o:p></o:p> public joyistar.eip.vo.XmlDataSet update_XML(joyistar.eip.vo.XmlDataSet xmlDataSet) throws Exception {<o:p></o:p> Connection conn = null;<o:p></o:p> Statement stmt = null;<o:p></o:p> XmlAction action = null;<o:p></o:p> String sql = null;<o:p></o:p> String where = null;<o:p></o:p> try {<o:p></o:p> System.setProperty("jdbc.drivers", drivers);<o:p></o:p> conn = DriverManager.getConnection(url, username, password);<o:p></o:p> stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);<o:p></o:p> conn.setAutoCommit(false); <o:p></o:p> for(int i = 0; i<xmlDataSet.actions.size(); i++) {<o:p></o:p> action = xmlDataSet.getAction(i);<o:p></o:p> sql = xmlDataSet.buildSql(action, tablename);<o:p></o:p> if(sql!=null)<o:p></o:p> stmt.executeUpdate(sql);<o:p></o:p> }<o:p></o:p> conn.commit(); <o:p></o:p> } <o:p></o:p> catch(Exception e) {<o:p></o:p> xmlDataSet.error = e.getMessage();<o:p></o:p> e.printStackTrace();<o:p></o:p> } <o:p></o:p> finally {<o:p></o:p> if(stmt != null)<o:p></o:p> stmt.close();<o:p></o:p> if(conn != null)<o:p></o:p> conn.close();<o:p></o:p> }<o:p></o:p> return xmlDataSet;<o:p></o:p> }<o:p></o:p> |
<o:p> </o:p>
由于在上个例子数据查询时我们已指定了数据库连接和表名,因此在这里我们不需要额外的代码就可以依托这个框架来提交最基本的数据(增删改)到数据库中。<o:p></o:p>
在这里主要用到的方法是XmlAction的buildSql方法,从而将每条数据变化生成SQL供执行,当然,您也可以使用XmlAction的更多属性和方法,自已生成更灵活的SQL,比如更多相关表的提交、数据提交前的处理等。数据变化的情况都可以通过XmlAction取得,详细的使用方法请参考帮助文档及XmlDataSet和XmlAction的源代码(商业版附件)。<o:p></o:p>
<o:p> </o:p>
现在运行界面网页simple.htm,就可以在下面的结果中操作增加、修改、删除数据后并提交到数据库啦。<o:p></o:p>
<v:shapetype id="_x0000_t75" stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600"><v:stroke joinstyle="miter"></v:stroke><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:connecttype="rect" gradientshapeok="t" o:extrusionok="f"></v:path><o:lock aspectratio="t" v:ext="edit"></o:lock></v:shapetype><v:shape id="_x0000_i1025" style="WIDTH: 378pt; HEIGHT: 249.75pt" type="#_x0000_t75" o:ole=""><v:imagedata o:title="" src="file:///E:\DOCUME~1\jy\LOCALS~1\Temp\msohtml1\01\clip_image001.png"></v:imagedata></v:shape><o:p></o:p>
<o:p> </o:p>