<%@ page contentType="text/xml; charset=GB2312" %>
<%@ page import="xmlinterface.*" %>
<%@ page import="java.sql.*" %>
<%
String sql = new String();
ResultSet rs = null;
java.sql.Connection con=null;
java.sql.Statement stmt=null;
String where = new String();
String acttype = null; //操作类型
XmlAction action = null; //一个修改动作
XmlPost xmlpost = new XmlPost();
String old_item_id=null;
String new_item_id=null;
try {
String drivers = "sun.jdbc.odbc.JdbcOdbcDriver";
System.setProperty("jdbc.drivers",drivers);
String username = "";
String password = "";
String url = "jdbc:odbc:jcldemo";
con=DriverManager.getConnection(url,username,password);
stmt= con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
xmlpost.Open(request);
for(int i = 0;i<xmlpost.Actions.size();i++) {
action = xmlpost.GetAction(i);
if(action.QueryName.equals("query1")){ //处理数据集query1即主表
acttype = action.ActionType;
if(acttype.equals("old")) {//有操作类型是old,用于定位数据,后面紧接的操作是update或delete
old_item_id=action.GetField("SALE_ID").Value;
where=" where "+action.GetField("SALE_ID").Name+"="+action.GetField("SALE_ID").Value;
}
if(acttype.equals("update")){
String set = " set ";
for(int j=0;j<action.Fields.size();j++) {
if(action.GetField(j).Name.equals("SALE_ID")) {
set = set+action.GetField(j).Name+"="+action.GetField(j).Value;
new_item_id=action.GetField(j).Value;
}
else {
set = set+action.GetField(j).Name+"='"+action.GetField(j).Value+"'";
}
if(j<action.Fields.size()-1) {
set = set+ "," ;
}
}
sql="update sale"+set+where;
stmt.executeUpdate("update sale"+set+where);
if(!new_item_id.equals(old_item_id)&&new_item_id!=null){
sql="update item set ITEM_ID="+new_item_id+" where ITEM_ID="+old_item_id;
stmt.executeUpdate(sql);
}
}
if(acttype.equals("delete")){
stmt.executeUpdate("delete from sale where "+action.GetField("SALE_ID").Name+"="+action.GetField("SALE_ID").Value);
}
if(acttype.equals("insert")){
String field = new String();
String value = new String();
for(int j=0;j<action.Fields.size();j++) {
field = field+action.GetField(j).Name;
if(!action.GetField(j).Name.equals("SALE_ID")&&!action.GetField(j).Name.equals("SALE_DATE")) {
value = value+action.GetField(j).Value;
}
else {
value=value+"'"+action.GetField(j).Value+"'";
}
if(j<action.Fields.size()-1) {
field = field+ "," ;
value = value+",";
}
}
sql="insert into sale ("+field+") values ("+value+")";
stmt.executeUpdate(sql);
}
}
else if( action.QueryName.equals("query2")){
acttype = action.ActionType;
if(acttype.equals("old")) {//有操作类型是old,用于定位数据,后面紧接的操作是update或delete
where=" where "+action.GetField("ITEM_ID").Name+"="+action.GetField("ITEM_ID").Value+" and "+action.GetField("ITEM_PRODUCT_ID").Name+"='"+action.GetField("ITEM_PRODUCT_ID").Value+"' ";
}
if(acttype.equals("update")){
String set = " set ";
for(int j=0;j<action.Fields.size();j++) {
if(!action.GetField(j).Name.equals("ITEM_PRODUCT_ID")) {
set = set+action.GetField(j).Name+"="+action.GetField(j).Value;
}
else {
set = set+action.GetField(j).Name+"='"+action.GetField(j).Value+"'";
}
if(j<action.Fields.size()-1) {
set = set+ "," ;
}
}
sql="update item"+set+where;
stmt.executeUpdate("update item"+set+where);
}
if(acttype.equals("delete")){
stmt.executeUpdate("delete from item where "+action.GetField("ITEM_ID").Name+"="+action.GetField("ITEM_ID").Value+" and "+action.GetField("ITEM_PRODUCT_ID").Name+"='"+action.GetField("ITEM_PRODUCT_ID").Value+"' ");
}
if(acttype.equals("insert")){
String field = new String();
String value = new String();
for(int j=0;j<action.Fields.size();j++) {
field = field+action.GetField(j).Name;
if(!action.GetField(j).Name.equals("ITEM_PRODUCT_ID")) {
value = value+action.GetField(j).Value;
}
else {
value=value+"'"+action.GetField(j).Value+"'";
}
if(j<action.Fields.size()-1) {
field = field+ "," ;
value = value+",";
}
}
sql="insert into item ("+field+") values ("+value+")";
stmt.executeUpdate(sql);
}
}
}
out.println(xmlpost.GetXml()); //返回处理信息
} catch(Exception e) {
xmlpost.Error=e.getMessage();
out.println(xmlpost.GetXml()); //出错后,返回出错信息
e.printStackTrace();
return;
} finally {
if(rs!=null)
rs.close();
con.close();
}
%>