Silverlight利用WebService进行增删改查

合集下载

Web增删改查的流程_正在整理中

Web增删改查的流程_正在整理中

1.增删改查功能说明1.1.说明1,功能2,转向页面(重定向)命名:使用DispatchAction,把一组业务相关的方法放在一个类中。

命名如下:ActionForward与页面的命名说明:一般情况下,可以添加和修改使用同一个页面。

1.2.方法声明1.3.列表的流程练习:根据静态页面list.html,改写为list.jsp 1.4.删除的流程传递id参数,指定要被删除的记录的id值。

1.5.添加的流程1.6.修改的流程1.7.表单验证服务器端验证,ActionForm客户端验证:JavaScript1.7.1.服务器端验配置validate=”false”,在Action中自行验证1.7.2.客户端验证2.分页步骤:1,确定显示效果与数据2,定义JavaBean:PageView3,准备显示数据2.1. 显示效果页面显示效果(最多显示10个)1 2 3 4 5 总页码<=10个(共5页),显示所有页码3 4 5 6 7 8 9 10 11 12 显示当前页附近的共10个页码(共13页)1 2 3 4 5 6 7 8 9 10 (前面不足4个)显示前10个页码(共13页)4 5 6 7 8 9 10 1112 13 (后面不足5个)显示后10个页码(共13页)1,条件2,页码2.2. 重用1,分页的页面代码重用:使用<%include%>包含分页信息显示代码(分页用的地址是不同的,由包含页面提供)2,分页的计算逻辑重用:把计算的逻辑放到PageView构造方法中,只接受几个必须参数。

3,支持分页的dao方法:只需要一条查询语句,即可完成总数量与当前页数据的查询。

2.步骤先学习将要用到的知识点,或进行相应的练习。

2009-11-2总结1,分析需求,写出相应的静态页面(效果页面)。

2,设计实体,实体映射,生成表结构(Dao接口与实现类)。

3,分析功能并且定义出相应的Action中的方法,还要写出转向的资源。

Servlet实现增删改查功能

Servlet实现增删改查功能

MVC模式M:Model,即模型,对于JavaBeanV:View,即试图,对应JSP页面C:Controller,即控制器,对应Servlet1.以下为MVC实现一个简单的增删改查功能1>显示记录2>增加一条记录3>修改一条记录4>删除一条记录程序源代码:M层:模型层1.封装一条信息的所有属性JavaBean.java ,即VO package muta.bean;/*** @author help*封装一条信息的所有属性*/public class JavaBean {private int id;private String name;private String password;private String sex;private int age;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) { = name;}public String getPassword() {return password;}public void setPassword(String password) { this.password = password;}public String getSex() {return sex;}public void setSex(String sex) {/*** @author help*操作数据库的方法*/public class SqlBean {Connection con;PreparedStatement pre;ResultSet rs;public SqlBean(){try {Class.forName("com.mysql.jdbc.Driver");} catch (ClassNotFoundException e) {e.printStackTrace();}try {con=DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/MyServl et","root","122828");} catch (SQLException e) {e.printStackTrace();}}/*** @author help**插入新的一条记录* @return*/public int getInsert(String sql,JavaBean jBean) {int count =0;try {pre = con.prepareStatement(sql);pre.setString(1,jBean.getName());pre.setString(2,jBean.getPassword());pre.setString(3,jBean.getSex());pre.setInt(4,jBean.getAge());count=pre.executeUpdate();} catch (SQLException e) {e.printStackTrace();}finally{try {pre.close();con.close();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}return count;}/*** @author help**删除一条记录* @return*/public int getDelete(String sql,int id){int count =0;try {pre = con.prepareStatement(sql);pre.setInt(1, id);count=pre.executeUpdate();} catch (SQLException e) {e.printStackTrace();}finally{try {pre.close();con.close();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}return count;}/*** @author help**根据ID查询某一条记录* @return*/public JavaBean getSearchById(String sql,int id){JavaBean jBean = new JavaBean();try {pre = con.prepareStatement(sql);pre.setInt(1, id);rs=pre.executeQuery();while(rs.next()){jBean.setId(rs.getInt("id"));jBean.setName(rs.getString("name"));jBean.setPassword(rs.getString("password"));jBean.setSex(rs.getString("sex"));jBean.setAge(rs.getInt("age"));}} catch (SQLException e){e.printStackTrace();}return jBean;}/*** @author help**更新某一条记录* @return*/public int getUpdate(String sql,JavaBean jBean) {int count =0;try {pre = con.prepareStatement(sql);pre.setInt(5,jBean.getId());pre.setString(1,jBean.getName());pre.setString(2,jBean.getPassword());pre.setString(3,jBean.getSex());pre.setInt(4,jBean.getAge());count = pre.executeUpdate();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}finally{try {pre.close();con.close();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}return count;}jBean.setAge(rs.getInt("age"));list.add(jBean);}} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}finally{try {pre.close();con.close();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}return list;}}V层:试图层1.显示记录集的页面 SearchList.jsp<%@page language="java"import="java.util.*" pageEncoding="UTF-8"%><%String path = request.getContextPath();String basePath =request.getScheme()+"://"+request.getServerName() +":"+request.getServerPort()+path+"/";%><!DOCTYPE HTML PUBLIC"-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><meta http-equiv="Content-Type"content="text/html; charset=UTF-8"><title>显示记录</title></head><body><center><font color=red size=72>学生信息如下:</font><hr><table border=1bgColor="#ffffff"width="500px" height="100px"><tr><td>ID</td><td>姓名</td><td>密码</td><td>性别</td><td>年龄</td><td><center>操作</center></td></tr><jsp:useBean id="sBean"class="muta.bean.SqlBean"/> <jsp:useBean id="jBean"class="muta.bean.JavaBean"/><%String sql ="select * from student order by id";java.util.List list =sBean.getSearch(sql);for(java.util.Iterator it=list.iterator();it.hasNext();){//获取一个JavaBean对象jBean =(muta.bean.JavaBean)it.next();%><tr><td><%=jBean.getId() %></td><td><%=jBean.getName() %></td><td><%=jBean.getPassword() %></td><td><%=jBean.getSex() %></td><td><%=jBean.getAge() %></td><td><a href="Insert.jsp">增加</a><a href="Delete?id=<%=jBean.getId()%>">删除</a>&nbsp;<ahref="SearchById?id=<%=jBean.getId()%>">更新</a> </td></tr><% }%></table>2.插入页面Insert.jsp<center><font color=red size=72>学生管理页面</font><hr><form action="Insert"method="post"><table border="1"><tr><td>姓名:</td><td><input name ="name"></td></tr><tr><td>密码:</td><td><input type="password"name ="password"></td> </tr><tr><td>性别:</td><td><input type="radio"name ="sex"value="男">男<input type="radio"name ="sex"value="女">女</td><tr><td>年龄:</td><td><input type="text"name ="age"></td> </tr><tr><td colspan="2"><center><input type="submit"value="提交"><input type="reset"value="重置"></center></td></tr></table></form><a href="SearchList.jsp">查询</a></center></body></html>3.更新页面Update.jsp<%@page language="java"import="java.util.*" pageEncoding="UTF-8"%><%String path = request.getContextPath();String basePath =request.getScheme()+"://"+request.getServerName() +":"+request.getServerPort()+path+"/";%><!DOCTYPE HTML PUBLIC"-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><meta http-equiv="Content-Type"content="text/html; charset=UTF-8"><title>更新</title></head><body><center><font color=red size=72>学生管理页面</font><hr><form action="Update"method="post""><table border="1"><tr><td>学生ID:</td><td><input name="id"value="<%=request.getAttribute("id") %>" readonly></td></tr><tr><td>学生姓名:</td><td><input name="name"value="<%=request.getAttribute("name") %>"></td> </tr><tr><td>学生密码:</td><td><input type="password"name="password"value="<%=request.getAttribute("password") %>"> </td></tr><tr><td>学生性别:</td><td><input type="radio"name ="sex"value="男"<%=request.getAttribute("man") %>>男<input type="radio"name ="sex"value="女"<%=request.getAttribute("woman") %>>女</td></tr><tr><td>学生年龄:</td><td><input type="text"name="age"value="<%=request.getAttribute("age") %>"></td> </tr><tr><td colspan="2"><center><input type="submit"value="提交"><input type="reset"value="重置"></center>4.出错页面Error.jspC层:控制层—Servlet1.显示记录集的Servlet----SearchById.javapackage muta.servlet;import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import muta.bean.JavaBean;import muta.bean.SqlBean;public class SearchById extends HttpServlet {private static final long serialVersionUID = 1L;/*** The doDelete method of the servlet. <br>** This method is called when a HTTP delete request is received.** @param request the request send by the client to the server* @param response the response send by the server to the client* @throws ServletException if an error occurred* @throws IOException if an error occurred*/public void doDelete(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {// Put your code here}/*** The doGet method of the servlet. <br>** This method is called when a form has its tag value method equals to get.** @param request the request send by the client to the server* @param response the response send by the server to the client* @throws ServletException if an error occurred* @throws IOException if an error occurred*/public void doGet(HttpServletRequest request, HttpServletResponseresponse)throws ServletException, IOException {doPost(request,response);}/*** The doPost method of the servlet. <br>** This method is called when a form has its tag value method equals to post.** @param request the request send by the client to the server* @param response the response send by the server to the client* @throws ServletException if an error occurred* @throws IOException if an error occurred*/public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {response.setContentType("text/html");request.setCharacterEncoding("utf-8"); response.setCharacterEncoding("utf-8");//获取用户IDString sid = request.getParameter("id");int id =Integer.parseInt(sid);String sql ="select * from student where id=?"; SqlBean sBean = new SqlBean();JavaBean jBean = sBean.getSearchById(sql, id);//用户IDrequest.setAttribute("id",jBean.getId());//用户姓名request.setAttribute("name",jBean.getName());//用户密码request.setAttribute("password",jBean.getPassword());//用户性别String sex="";String man="";String woman="";if(jBean.getSex()!=null){sex=jBean.getSex().trim();if(sex.equals("男")){man ="checked";}else{woman ="checked";}}request.setAttribute("man",man);request.setAttribute("woman",woman);//用户年龄request.setAttribute("age",jBean.getAge());//转发request.getRequestDispatcher("Update.jsp").forward(request,2.增加记录的Servlet----Insert.javaprivate static final long serialVersionUID = 1L;/*** The doDelete method of the servlet. <br>** This method is called when a HTTP delete request is received.** @param request the request send by the client to the server* @param response the response send by the server to the client * @throws ServletException if an error occurred* @throws IOException if an error occurred*/public void doDelete(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {// Put your code here}/*** The doGet method of the servlet. <br>** This method is called when a form has its tag value method equals to get.** @param request the request send by the client to the server* @param response the response send by the server to the client* @throws ServletException if an error occurred* @throws IOException if an error occurred*/public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {response.setContentType("text/html");doPost(request,response);}/*** The doPost method of the servlet. <br>** This method is called when a form has its tag value method equals to post.* @param request the request send by the client to the server* @param response the response send by the server to the client* @throws ServletException if an error occurred* @throws IOException if an error occurred*/public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {response.setContentType("text/html");request.setCharacterEncoding("utf-8");response.setCharacterEncoding("utf-8");//获取前台页面数据String name =request.getParameter("name");String password =request.getParameter("password");String sex =request.getParameter("sex");String sage = request.getParameter("age");int age =Integer.parseInt(sage);//封装到JavaBean对象中去JavaBean jBean = new JavaBean();jBean.setName(name);jBean.setPassword(password);jBean.setSex(sex);jBean.setAge(age);//调用模型层String sql = "insert into student(name,password,sex,age) values(?,?,?,?)";SqlBean sBean = new SqlBean();int count =sBean.getInsert(sql,jBean);String url="";if(count>0){url="SearchList.jsp";}else{url ="error.jsp";request.setAttribute("error", "ע��");}//转发ת3.更新记录的Servlet----Updated.java/****/private static final long serialVersionUID = 1L;/*** The doDelete method of the servlet. <br>** This method is called when a HTTP delete request is received.** @param request the request send by the client to the server* @param response the response send by the server to the client * @throws ServletException if an error occurred* @throws IOException if an error occurred*/public void doDelete(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {// Put your code here}/*** The doGet method of the servlet. <br>** This method is called when a form has its tag value method equals to get.** @param request the request send by the client to the server* @param response the response send by the server to the client* @throws ServletException if an error occurred* @throws IOException if an error occurred*/public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {doPost(request,response);}/*** The doPost method of the servlet. <br>** This method is called when a form has its tag value method equals to post.** @param request the request send by the client to the server* @param response the response send by the server to the client* @throws ServletException if an error occurred* @throws IOException if an error occurred*/public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {response.setContentType("text/html");request.setCharacterEncoding("utf-8");response.setCharacterEncoding("utf-8");//获得前台表单信息String sid = request.getParameter("id");int id =Integer.parseInt(sid);String name =request.getParameter("name");String password =request.getParameter("password");String sex =request.getParameter("sex");String sage = request.getParameter("age");int age =Integer.parseInt(sage);//封装到JavaBean对象中去JavaBean jBean = new JavaBean();jBean.setId(id);jBean.setName(name);jBean.setPassword(password);jBean.setSex(sex);jBean.setAge(age);String sql ="update student set name=?,password=?,sex=?,age=? where id=?";SqlBean sBean = new SqlBean();int count =sBean.getUpdate(sql,jBean);String url="";if(count>0){url="SearchList.jsp";}4.删除记录的Servlet----Delete.javaimport muta.bean.SqlBean;public class Delete extends HttpServlet {private static final long serialVersionUID = 1L;/*** The doDelete method of the servlet. <br>** This method is called when a HTTP delete request is received.** @param request the request send by the client to the server* @param response the response send by the server to the client * @throws ServletException if an error occurred* @throws IOException if an error occurred*/public void doDelete(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {// Put your code here}/*** The doGet method of the servlet. <br>** This method is called when a form has its tag value method equals to get.** @param request the request send by the client to the server* @param response the response send by the server to the client* @throws ServletException if an error occurred* @throws IOException if an error occurred*/public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {response.setContentType("text/html");doPost(request,response);}/*** The doPost method of the servlet. <br>** This method is called when a form has its tag value method equals topost.** @param request the request send by the client to the server* @param response the response send by the server to the client* @throws ServletException if an error occurred* @throws IOException if an error occurred*/public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {response.setContentType("text/html");//获取超链接传来的数据String sId = request.getParameter("id");int id =Integer.parseInt(sId);////调用模型层删除方法String sql = "delete from student where id=?";SqlBean sBean = new SqlBean();int count =sBean.getDelete(sql, id);XML文件xsi:schemaLocation="/xml/ns /javaee/xml/ns/javaee/web-app_2_5. xsd"><servlet><servlet-name>Update</servlet-name><servlet-class>muta.servlet.Update</servlet-class ></servlet><servlet><servlet-name>SearchById</servlet-name><servlet-class>muta.servlet.SearchById</servlet-c lass></servlet><servlet><servlet-name>Insert</servlet-name><servlet-class>muta.servlet.Insert</servlet-class ></servlet><servlet><servlet-name>Delete</servlet-name><servlet-class>muta.servlet.Delete</servlet-class ></servlet><servlet-mapping><servlet-name>Update</servlet-name><url-pattern>/Update</url-pattern></servlet-mapping><servlet-mapping><servlet-name>SearchById</servlet-name><url-pattern>/SearchById</url-pattern></servlet-mapping><servlet-mapping><servlet-name>Insert</servlet-name><url-pattern>/Insert</url-pattern></servlet-mapping>。

webservice函数用法

webservice函数用法

webservice函数是一种常用的网络服务接口,用于实现不同系统或评台之间的数据交换和通信。

它可以帮助开发人员轻松地通过网络调用远程的服务程序,并在不同的评台上进行数据交换和通信。

本文将对webservice函数的用法进行详细介绍,希望能够对相关开发人员有所帮助。

一、webservice函数的定义webservice函数是一种基于网络的服务接口,它使用标准的HTTP协议进行数据传输,通常通过SOAP(Simple Object Access Protocol)来进行数据的封装和传输。

开发人员可以通过webservice函数轻松地将自己的程序封装成一个web服务,并通过网络对外提供服务。

二、webservice函数的语法在大多数的编程语言中,webservice函数的语法都比较相似。

例如在Java语言中,可以通过JAX-WS或JAX-RPC等方式来实现webservice函数。

在.NET评台中,可以使用来实现webservice函数。

一般来说,webservice函数的语法包括以下几个方面:1. 定义webservice函数的接口2. 实现webservice函数的具体功能3. 部署webservice函数到服务器上三、webservice函数的用法使用webservice函数可以让开发人员轻松地实现不同系统之间的数据交换和通信,下面将介绍webservice函数的常用用法。

1. 定义webservice函数的接口在实际开发中,首先需要定义webservice函数的接口,即需要确定需要提供哪些服务。

开发人员可以根据实际需求,定义出webservice函数的各种接口,包括输入参数和返回值等。

2. 实现webservice函数的具体功能一旦确定了webservice函数的接口,接下来就需要实现具体的功能。

开发人员可以根据接口的定义,编写相应的代码来实现webservice函数的功能。

在实现的过程中,需要考虑数据的安全性和可靠性等问题。

WebService服务调用方法介绍

WebService服务调用方法介绍

WebService服务调用方法介绍WebService是一种基于网络的互操作技术,可通过简单对象访问协议 (SOAP) 来实现不同平台和编程语言之间的通信。

WebService服务调用方法是指通过客户端应用程序与后端WebService进行通信,实现数据传输和功能调用的过程。

下面将详细介绍WebService服务调用方法。

1. 了解WebService服务:在使用WebService服务之前,首先需要了解所需要调用的WebService服务的接口、方法以及参数。

通常,WebService会提供一个WSDL(Web Services Description Language)文件,其中定义了WebService的接口和方法信息。

通过WSDL文件,客户端可以获取到所有WebService接口的详细描述和相关信息。

2. 创建客户端应用程序:为了调用WebService服务,需要创建一个客户端应用程序。

这可以是一个使用特定编程语言编写的应用程序,如Java、C#等。

在客户端应用程序中,需要导入和使用与WebService相关的库和类,以便在应用程序中调用WebService服务。

3. 创建服务代理:客户端应用程序需要创建一个用于与WebService 服务进行通信的代理。

代理是客户端应用程序与WebService服务之间的中间层,它用于封装与WebService的通信细节,并提供一种方便的方式来调用WebService服务的方法。

根据不同编程语言和框架的要求,可以通过使用类似“wsimport”或“svcutil”等工具来生成代理类。

4. 调用WebService服务方法:通过创建的代理类,客户端应用程序可以直接调用WebService服务的方法。

在调用方法之前,需要根据WebService服务的接口定义传递正确的参数。

参数的传递通常是通过创建请求对象并为其设置相应的属性来完成的。

请求对象将包含需要传输给WebService服务的数据。

增删改查项目流程

增删改查项目流程

增删改查项目流程在软件开发和项目管理中,增删改查(CRUD)是指对数据库中的数据进行增加(Create)、删除(Delete)、修改(Update)和查询(Retrieve)的操作。

在项目开发过程中,对数据的增删改查是非常常见的操作,因此建立一个清晰的流程来处理这些操作是非常重要的。

本文将介绍增删改查项目流程的具体步骤和注意事项。

一、增加项目流程1. 确定需求:在进行数据增加操作之前,首先要明确需求,包括新增数据的类型、格式、以及所需的字段等。

2. 创建表结构:根据需求,设计数据库表结构,包括表名、字段名、数据类型、主键、外键等。

3. 编写SQL语句:根据表结构,编写SQL语句来创建新的数据表或向现有表中插入新的数据。

4. 数据验证:在插入新数据之前,需要进行数据验证,确保数据的完整性和准确性。

5. 插入数据:使用INSERT语句向数据库中插入新的数据。

6. 测试:对新增数据的插入操作进行测试,确保数据的正确性和完整性。

二、删除项目流程1. 确定需求:在进行数据删除操作之前,需要明确需求,包括要删除的数据类型、条件等。

2. 编写SQL语句:根据需求,编写DELETE语句来删除数据库中的数据。

3. 数据验证:在删除数据之前,需要进行数据验证,确保删除操作的准确性和完整性。

4. 删除数据:执行DELETE语句,删除数据库中符合条件的数据。

5. 测试:对删除数据的操作进行测试,确保数据被正确删除。

三、修改项目流程1. 确定需求:在进行数据修改操作之前,需要明确需求,包括要修改的数据类型、条件、以及修改的字段等。

2. 编写SQL语句:根据需求,编写UPDATE语句来修改数据库中的数据。

3. 数据验证:在修改数据之前,需要进行数据验证,确保修改操作的准确性和完整性。

4. 修改数据:执行UPDATE语句,修改数据库中符合条件的数据。

5. 测试:对修改数据的操作进行测试,确保数据被正确修改。

四、查询项目流程1. 确定需求:在进行数据查询操作之前,需要明确需求,包括要查询的数据类型、条件、以及需要返回的字段等。

servlet增删改查

servlet增删改查

servlet增删改查Servlet使⽤Servlet进⾏增删改查步骤1.导⼊以下⼏个jar包到WEB-INF下的lib包⾥,必要时build path,其中jstl.jar和standard.jar是使⽤jstl要⽤的(eclipse中)2.写对应的dao,service,以及实现类3.写对应的servlet类,必须继承HttpServlet类1. 在此servlet类⾥加私有的service实现类;2. 添加doPost()和doGet⽅法:⼀般是在doPost()⾥写具体操作代码,doGet()⽅法⾥调⽤doPost,这样,不管提交⽅式是post还是get,都可以访问;3. doPost()⽅法⾥要先加request.setCharacterEncoding("utf-8");response.setContentType("text/html;charset=utf-8");1. 取参和传参,转发和重定向取参:String age1=request.getParameter("age");int age = Integer.parseInt(age1);传参:request.setAttribute("emp", emp);转发:request.getRequestDispatcher("/emp.jsp").forward(request, response);重定向:response.sendRedirect(request.getContextPath()+"/error.jsp");5配置web.xml,写对应的servlet和其映射访问时:先通过url定位到web.xml⾥servlet的url-pattern,再对应到servlet-name,再找到对应的servlet类,根据访问时提交的⽅法调⽤相应的doPost()或者doGet()⽅法6.写对应的前台页⾯取后台传过来的数据:${ }提交的url路径:<form action="/servletTest/updateEmp" method="post"></form><a href="/servletTest/deleteEmp?id=${emp.id }">删除</a>⽰例代码DbUtil.javapackage util;import mons.dbutils.QueryRunner;import boPooledDataSource;public class DbUtil {private static ComboPooledDataSource ds=new ComboPooledDataSource(); public static QueryRunner getQueryRunner(){QueryRunner qr = new QueryRunner(ds);return qr;}}c3p0-config.xml<c3p0-config><default-config><property name="driverClass">com.mysql.jdbc.Driver</property><property name="jdbcUrl">jdbc:mysql://localhost/test</property><property name="user">root</property><property name="password"></property><property name="initialPoolSize">5</property><property name="maxPoolSize">10</property></default-config></c3p0-config>EmpDao.javapackage dao;import java.util.List;import entity.Emp;public interface EmpDao {public int add(Emp emp);public int delete(int id);public int update(Emp emp);public Emp find(int id);public List<Emp> findAll();}EmpDaoImpl.javapackage dao.impl;import java.sql.SQLException;import java.util.List;import mons.dbutils.QueryRunner;import mons.dbutils.handlers.BeanHandler;import mons.dbutils.handlers.BeanListHandler;import util.DbUtil;import dao.EmpDao;import entity.Emp;public class EmpDaoImpl implements EmpDao {QueryRunner qr = DbUtil.getQueryRunner();@Overridepublic int add(Emp emp) {String sql="insert into emp(age,name) values(?,?) ";int num=0;try {num = qr.update(sql, emp.getAge(),emp.getName());} catch (SQLException e) {e.printStackTrace();}return num;}@Overridepublic List<Emp> findAll() {String sql="select*from emp";List<Emp> emps=null;try {emps=qr.query(sql, new BeanListHandler<Emp>(Emp.class)); } catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}return emps;}@Overridepublic int delete(int id) {String sql="delete from emp where id="+id;int num=0;try {num=qr.update(sql);} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}return num;}@Overridepublic int update(Emp emp) {String sql="update emp set name=?,age=? where id=?"; System.out.println("sql---------"+sql);int num=0;try {num=qr.update(sql, emp.getName(),emp.getAge(),emp.getId()); } catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}return num;}@Overridepublic Emp find(int id) {String sql="select * from emp where id="+id;Emp emp=null;try {emp=qr.query(sql, new BeanHandler<Emp>(Emp.class));} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}return emp;}}EmpService.javapackage service;import java.util.List;import entity.Emp;public interface EmpService {public int addEmp(Emp emp);public List<Emp> findAll();public int delete(int id);public int update(Emp emp);public Emp find(int id);}EmpServiceImpl.javapackage service.impl;import java.util.List;import service.EmpService;import dao.impl.EmpDaoImpl;import entity.Emp;public class EmpServiceImpl implements EmpService {private EmpDaoImpl empDao=new EmpDaoImpl();@Overridepublic int addEmp(Emp emp) {int num = empDao.add(emp);return num;}@Overridepublic List<Emp> findAll() {return empDao.findAll();}@Overridepublic int delete(int id) {return empDao.delete(id);}@Overridepublic int update(Emp emp) {return empDao.update(emp);}@Overridepublic Emp find(int id) {return empDao.find(id);}}AddEmpServlet.javapackage servlet;import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import service.impl.EmpServiceImpl;import entity.Emp;public class AddEmpServlet extends HttpServlet {private EmpServiceImpl empService=new EmpServiceImpl();@Overridepublic void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {request.setCharacterEncoding("utf-8");response.setContentType("text/html;charset=utf-8");String age1=request.getParameter("age");int age = Integer.parseInt(age1);String name = request.getParameter("name");Emp emp=new Emp();emp.setAge(age);emp.setName(name);int num = empService.addEmp(emp);if(num>0){response.sendRedirect(request.getContextPath()+"/empList");}else{response.sendRedirect(request.getContextPath()+"/error.jsp");}}@Overridepublic void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {doPost(request, response);;}}DeleteEmpServlet.javapackage servlet;import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import service.impl.EmpServiceImpl;import entity.Emp;public class DeleteEmpServlet extends HttpServlet {private EmpServiceImpl empService=new EmpServiceImpl();@Overridepublic void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {request.setCharacterEncoding("utf-8");response.setContentType("text/html;charset=utf-8");String id1 = request.getParameter("id");Integer id=Integer.parseInt(id1);System.out.println("进⼊删除,id="+id);int num = empService.delete(id);System.out.println("删除?---"+num);if(num>0){response.sendRedirect(request.getContextPath()+"/empList");}else{response.sendRedirect("/error.jsp");}}@Overridepublic void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {doPost(request, response);}}//修改时,先找到要修改的对象,再转发到需要修改的页⾯,显⽰要修改的对象信息,然后提交时修改FindUpdEmpServlet .javapackage servlet;import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import entity.Emp;import service.impl.EmpServiceImpl;public class FindUpdEmpServlet extends HttpServlet {private EmpServiceImpl empService=new EmpServiceImpl();@Overridepublic void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {request.setCharacterEncoding("utf-8");response.setContentType("text/html;charset=utf-8");Integer id=Integer.parseInt(request.getParameter("id"));Emp emp = empService.find(id);System.out.println("要修改的emp"+emp.getName());if(emp!=null){request.setAttribute("emp", emp);request.getRequestDispatcher("/update.jsp").forward(request, response);;}else{response.sendRedirect(request.getContextPath()+"/error.jsp");}}@Overridepublic void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doPost(request, response);}}UpdateEmpServlet.javapackage servlet;import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import service.impl.EmpServiceImpl;import entity.Emp;public class UpdateEmpServlet extends HttpServlet {private EmpServiceImpl empService=new EmpServiceImpl();@Overridepublic void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {request.setCharacterEncoding("utf-8");response.setContentType("text/html;charset=utf-8");String id1 = request.getParameter("id");Integer id=Integer.parseInt(id1);String name = request.getParameter("name");String age1 = request.getParameter("age");Integer age=Integer.parseInt(age1);Emp emp=new Emp();emp.setId(id);emp.setAge(age);emp.setName(name);//empService.find(id);int num = empService.update(emp);if(num>0){response.sendRedirect(request.getContextPath()+"/empList");}else{response.sendRedirect("/error.jsp");}}@Overridepublic void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doPost(request, response);}}FindEmpServlet.javapackage servlet;import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import entity.Emp;import service.impl.EmpServiceImpl;public class FindEmpServlet extends HttpServlet {private EmpServiceImpl empService=new EmpServiceImpl();@Overridepublic void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {request.setCharacterEncoding("utf-8");response.setContentType("text/html;charset=utf-8");Integer id=Integer.parseInt(request.getParameter("id"));Emp emp = empService.find(id);System.out.println("emp---"+emp.getName()+"---"+emp.getAge());if(emp!= null){request.setAttribute("emp", emp);request.getRequestDispatcher("/emp.jsp").forward(request, response);}else{response.sendRedirect(request.getContextPath()+"/error.jsp");}}@Overridepublic void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doPost(request, response);}}FindEmp s Servlet.javapackage servlet;import java.io.IOException;import java.util.List;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import entity.Emp;import service.impl.EmpServiceImpl;public class FindEmpsServlet extends HttpServlet {private EmpServiceImpl empService=new EmpServiceImpl();@Overridepublic void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {request.setCharacterEncoding("utf-8");response.setContentType("text/html;charset=utf-8");List<Emp> emps = empService.findAll();if(emps!=null){request.setAttribute("emps", emps);request.getRequestDispatcher("/list.jsp").forward(request, response);}else{response.sendRedirect(request.getContextPath()+"/error.jsp");}}@Overridepublic void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {doPost(request, response);}}web.xml前台页⾯add.jsp<%@ page language="java" contentType="text/html; charset=utf-8"pageEncoding="utf-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "/TR/html4/loose.dtd"> <html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>添加员⼯</title></head><body><form action="/servletTest/addEmp" method="post">姓名:<input type="text" name="name"/><p>年龄:<input type="text" name="age"/><p><input type="submit" value="添加"/></form></body></html>list.jsp<%@ page language="java" contentType="text/html; charset=utf-8"pageEncoding="utf-8"%><%@taglib uri="/jsp/jstl/core" prefix="c"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "/TR/html4/loose.dtd"> <html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>员⼯列表</title></head><body>添加成功<table><tr ><td colspan="3"><a href="index.jsp">添加</a></td></tr><tr><th>编号</th><th>年龄</th><th>age</th><th colspan="3">操作</th></tr><!--items⾥⾯写${requestScope.emps}也可以 --><c:forEach items="${emps }" var="emp" varStatus="vs"><tr><td>${emp.id }</td><td>${ }</td><td>${emp.age }</td><td><a href="/servletTest/deleteEmp?id=${emp.id }">删除</a></td><td><a href="/servletTest/findUpdEmp?id=${emp.id }">修改</a></td><td><a href="/servletTest/findEmp?id=${emp.id }">查看</a></td></tr></c:forEach></table></body></html>emp.jsp<%@ page language="java" contentType="text/html; charset=utf-8"pageEncoding="utf-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "/TR/html4/loose.dtd"> <html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>Insert title here</title></head><body>编号:${emp.id }<p>姓名:${ }<p>年龄:${emp.age }</body></html>update.jsp<%@ page language="java" contentType="text/html; charset=utf-8"pageEncoding="utf-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "/TR/html4/loose.dtd"> <html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>修改员⼯</title></head><body><form action="/servletTest/updateEmp" method="post">编号:<input type="text" name="id" value="${emp.id }" readonly="readonly"/><p>姓名:<input type="text" name="name" value="${ }"/><p>年龄:<input type="text" name="age" value="${emp.age }"/><p><input type="submit" value="提交"/></form></body></html>error.jsp<%@ page language="java" contentType="text/html; charset=utf-8"pageEncoding="utf-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "/TR/html4/loose.dtd"> <html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>Insert title here</title></head><body><h1>出错了</h1></body></html>。

webservice的调用方式

webservice的调用方式

webservice的调用方式Web Service的调用方式Web Service是一种基于互联网的通信协议,通过HTTP和XML 来进行通信。

它可以实现不同平台、不同语言之间的数据交互和共享,为分布式应用提供了一种标准化的通信方式。

在使用Web Service时,我们可以采用不同的调用方式,以满足不同的需求和场景。

1. SOAP方式调用SOAP(Simple Object Access Protocol)是一种基于XML的消息格式,用于在Web Service之间进行通信。

SOAP方式调用Web Service需要创建SOAP消息,并通过HTTP传输到目标服务端。

SOAP消息包含了调用的方法、参数和返回值等信息。

服务端接收到SOAP消息后,解析其中的内容,并执行相应的方法,然后将结果封装成SOAP消息返回给客户端。

2. RESTful方式调用REST(Representational State Transfer)是一种基于Web的软件架构风格,它使用简单的URL作为资源的标识符,并通过HTTP 的不同请求方法来对资源进行操作。

RESTful方式调用Web Service时,我们可以使用不同的HTTP方法(如GET、POST、PUT、DELETE)来对资源进行增删改查操作。

客户端通过构建不同的URL来调用Web Service,服务端根据URL的不同执行相应的操作,并返回结果。

3. JSON-RPC方式调用JSON-RPC(JavaScript Object Notation Remote Procedure Call)是一种基于JSON格式的远程过程调用协议。

JSON-RPC方式调用Web Service时,客户端将调用的方法、参数等信息封装成JSON格式的消息,并通过HTTP传输到服务端。

服务端接收到消息后,解析其中的内容,并执行相应的方法,然后将结果封装成JSON格式的消息返回给客户端。

一步一步学Silverlight 2系列(13)

一步一步学Silverlight 2系列(13)

一步一步学Silverlight 2系列(13):数据与通信之WebRequest概述Silverlight 2 Beta 1版本发布了,无论从Runtime还是Tools都给我们带来了很多的惊喜,如支持框架语言Visual Basic, Visual C#, IronRuby, Ironpython,对JSON、Web Service、WCF 以及Sockets的支持等一系列新的特性。

《一步一步学Silverlight 2系列》文章带您快速进入Silverli ght 2开发。

本文将简单介绍在Silverlight 2中如何使用WebRequest进行数据的提交和获取。

简单示例在本文中,我们仍然使用在一步一步学Silverlight 2系列(12):数据与通信之WebClient中用过的示例,只不过稍微做一点小的改动,使用WebRequest提交书籍编号数据,并根据书籍号返回价格信息。

最终运行的结果如下图:编写界面布局,XAML如下:在界面加载时绑定书籍列表,关于数据绑定可以参考一步一步学Silverlight 2系列(11):数据绑定。

接下来在SelectionChanged事件中实现用户选择书籍时,我们使用WebRequest提交书籍编号,并且获得价格数据,仍然采用异步模式,提供RequestReady和ResponseReady两个回调函数:实现RequestReady方法,将书籍的编号写入请求流中。

实现ResponseReady方法,显示返回的结果。

最后运行的结果如下:用户选择一本书籍后,将显示其价格:结束语本文简单介绍了在Silverlight 2中如何使用WebRequest提交和获取数据,你可以从这里下载示例程序。

下一篇:一步一步学Silverlight 2系列(14):数据与通信之WCF作者:TerryLee出处:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

增删改查思路及步骤

增删改查思路及步骤

增删改查思路及步骤1.引言1.1 概述在编写本文时,我们将介绍增删改查(CRUD)操作的思路和步骤。

增删改查是指对数据进行新增、删除、修改和查询的一系列操作。

这些操作在软件开发和数据管理中非常常见,是许多应用程序和系统的重要组成部分。

增加数据的操作是指向数据库或其他数据存储系统添加新的数据记录。

在进行增加数据操作时,我们需要明确所需添加的数据内容,并确保该数据满足预设的数据模型和结构。

删除数据的操作是指从数据库或其他数据存储系统中移除已有的数据记录。

在执行删除数据操作时,我们需要明确要删除的数据的标识或位置,并确保该删除操作不会对其他相关数据产生意外影响。

修改数据的操作是指对数据库或其他数据存储系统中的既有数据进行更新或修改。

在进行修改数据操作时,我们需要明确要修改的数据的标识和要进行的修改内容,并确保该修改操作不会破坏现有的数据完整性和一致性。

查询数据的操作是指根据特定条件从数据库或其他数据存储系统中获取所需的数据记录。

在进行查询数据操作时,我们需要明确所需数据的条件和查询方式,并确保查询结果的准确性和完整性。

通过本文我们将详细介绍每种操作的思路和步骤,并提供相关示例和实践经验。

我们希望读者在阅读本文后能够全面了解增删改查操作,并能够在实际应用中灵活运用这些操作。

最后,我们还将总结增删改查操作的思路和步骤,并提出未来进一步研究的方向,以推动这一领域的发展和创新。

1.2 文章结构本文将以增删改查(CRUD)的思路和步骤为主线,探讨在数据处理中的重要性和具体实施方法。

文章将分为以下几个主要部分:(1)引言:介绍本文的主题和背景,包括增删改查的概念和在实际应用中的重要性。

同时,对文章的结构和目的进行简要说明。

(2)正文:本部分将重点讨论增加数据、删除数据、修改数据和查询数据的思路和步骤。

对于每个操作,我们将阐述其背后的原理和方法,并提供具体的实例和步骤说明。

这将有助于读者全面理解和掌握增删改查的基本操作。

增删改查操作或方法

增删改查操作或方法

增删改查操作或方法增加(Create)数据:1.使用INSERT语句插入新的记录到数据库表中。

2.调用API或库函数来创建一个新的对象,并将其保存到内存或数据库中。

3.使用图形界面或命令行工具,提供一个表单或交互式界面,以便用户输入新的数据。

删除(Delete)数据:1.使用DELETE语句从数据库表中删除特定的记录。

2.调用API或库函数来删除指定的对象。

3.提供一个删除功能的图形界面或命令行工具,以便用户选择并删除数据。

修改(Update)数据:1.使用UPDATE语句更新数据库表中的记录。

2.调用API或库函数更新指定的对象。

查询(Retrieve)数据:1.使用SELECT语句从数据库表中检索特定的记录。

2.调用API或库函数以检索指定的对象。

3.提供一个功能的图形界面或命令行工具,允许用户输入条件并返回相关的数据。

以下是一些常见的增删改查操作的代码示例(以关系型数据库为例):增加数据:```sqlINSERT INTO table_name (column1, column2, ...) VALUES(value1, value2, ...);```删除数据:```sqlDELETE FROM table_name WHERE condition;```修改数据:```sqlUPDATE table_name SET column1 = value1, column2 = value2, ... WHERE condition;```查询数据:```sqlSELECT column1, column2, ... FROM table_name WHERE condition;```以下是一些常见的增删改查操作的代码示例(以编程语言为例):增加数据:```pythondef create_data(data):#调用数据库或API创建新数据pass```删除数据:```pythondef delete_data(id):#调用数据库或API删除指定数据pass```修改数据:```pythondef update_data(id, data):#调用数据库或API更新指定数据pass```查询数据:```pythondef retrieve_data(condition):#调用数据库或API查询满足条件的数据pass```根据实际需求,增删改查操作可以有许多变种。

Silverlight跨域在IIS中部署等问题解决方法

Silverlight跨域在IIS中部署等问题解决方法

Silverlight跨域,Silverlight在IIS 中部署等问题解决方法一:Silverlight 跨域Silverlight在设计的时候对网络安全方面做了很多考虑,具体可以看Silverlight SDK。

跨域通信是通过在其他域的根部署使用正确跨域策略文件的 Web 服务,可以在该域中启用基于 Silverlight 的应用程序要调用的 Web 服务。

Silverlight 支持两种类型的跨域策略文件。

∙ Silverlight 跨域策略 (clientaccesspolicy.xml)∙ Flash 跨域策略 (crossdomain.xml) 的子集使用跨域策略文件的跨域通信通常,如果基于 Silverlight 的应用程序检测到其请求是一个跨域请求,将首先在 Web 服务的应用程序根处查找 Silverlight 跨域策略文件(clientaccesspolicy.xml)。

如果这个请求导致"404 未找到"或其他错误,应用程序将在应用程序根处查找 Flash 跨域策略文件(crossdomain.xml)。

不允许重定向跨域策略文件。

此外,跨域策略文件保持对应用程序会话有效。

现在知道了只要在网站中部署一个跨域策略文件,就可以解决Silverlight跨域请求问题。

跨域策略文件要放在哪里?注意:跨域策略文件必须也只能放在网站的放置在根目录下。

clientaccesspolicy.xml配置:<?xml version="1.0" encoding="utf-8"?><access-policy><cross-domain-access><policy><allow-from><domain uri="*"/></allow-from><grant-to><resource path="/"include-subpaths="true"/></grant-to></policy></cross-domain-access></access-policy>crossdomain.xml配置:<?xml version="1.0"?><cross-domain-policy><allow-access-from domain="*" /></cross-domain-policy>二:Silverlight 在IIS 部署用silverlight开发的程序,部署到IIS 上,会经常弹出“Sys.InvalidOperationException: InitializeError error#2104 in control 'Xaml1': 无法下载 Silverlight 应用程序。

Silverlight改进总结

Silverlight改进总结

Silverlight改进总结交流1、Silverlight4新特性●打印API●RichTextArea 富文本控件(支持Paragraph,InlineUIContainer…)●ButtonBase和Hyperlink支持MVVM的ICommand接口●通过WebBrowser控件支持Html内容显示(只支持OOB 的Windowless,不支持输入中文)●Notification 提示框API●WebClient的网络认证●依赖对象绑定●IDataErrorInfo 和异步校验●XAP签名●自定义窗口外观●上下文菜单控件●SLLauncher silent installs2、应用INotifyDataErrorInfo实现异步校验通过Model类继承INotifyDataErrorInfo接口实现异步校验.一个方法public IEnumerable GetErrors(string propertyName)一个属性ErrorList = new Dictionary<string, List<string>>();添加错误列表,并显示到App.LoginedUser.AddError("LoginPassWord", "无效密码");public void AddError(string propName, string error){ErrorList[propName] = new List<string>();ErrorList[propName].Add(error);if (ErrorsChanged != null)ErrorsChanged(this, newDataErrorsChangedEventArgs(propName));}对应的属性和对应的校验提示信息支持TextBox, ComboBox, DatePicker3、WCF分页服务访问定义两个操作契约//返回二进制的数据表///<summary>///分页获取数据集///</summary>///<param name="sql">SQL语句</param>///<param name="startIndex">开始索引</param>///<param name="maxCount">如果是-1则不分页</param>///<param name="parameters">参数</param>///<param name="isStoredProcedure">是否存储过程</param>///<returns></returns>public byte[] ExcuteDataTable(string sql, int start, int size, List<SqlParameterInfo> parameters){…System.Data.DataSet ds = ExcuteDataTable(sql, start * size, size, parameters, false);//记录总的记录数ds.ExtendedProperties.Add("RecordCount", recordCount);var ms = new MemoryStream();//通过C1.C1Zip进行压缩using (var sw = new C1.C1Zip.C1ZStreamWriter(ms))ds.WriteXml(sw, XmlWriteMode.WriteSchema);//ds.WriteXml(ms, XmlWriteMode.WriteSchema);//返回XML的字节数组return ms.ToArray();}//更新数据public string UpdateData(byte[] dtAdded, byte[] dtModified, byte[] dtDeleted, string dataTableName){//对于不同DataRow….UpdateData(dtAdded, DataRowState.Added, transaction);UpdateData(dtModified, DataRowState.Modified, transaction);UpdateData(dtDeleted, DataRowState.Deleted, transaction);mit();….}void UpdateData(byte[] data, DataRowState state, OracleTransaction trans) {if (data == null)return;var ds = new DataSet();var ms = new MemoryStream(data);//通过DataSet的ReadXml方法恢复ds.ReadXml(ms);ds.AcceptChanges();foreach (DataTable dt in ds.Tables){foreach (DataRow dr in dt.Rows){switch (state){case DataRowState.Added:dr.SetAdded();break;case DataRowState.Modified:dr.SetModified();break;case DataRowState.Deleted:dr.Delete();break;}}}//计算总共有多少条记录public int CalculateRecord(string sql){string strCount = string.Format("select count(*) as co from {0}", tableName); }//分页获取数据集public System.Data.DataSet ExcuteDataTable(string sql, int startIndex, int maxCount, List<SqlParameterInfo> parameters, bool isStoredProcedure){...adapter.FillSchema(dt, SchemaType.Source);if (maxCount >0 )//分页处理adapter.Fill(ds, startIndex, maxCount, tableName);else//做分页dapter.Fill(ds);return ds;...}4、Silverlight端数据访问string sqlSel = "select * from 反馈需求记录where 编号=:BH";BasicHttpBinding binding = new BasicHttpBinding();EndpointAddress address = new EndpointAddress(newUri(Application.Current.Host.Source, "/WCFDataService.svc"));binding.MaxReceivedMessageSize = Int32.MaxValue;binding.MaxBufferSize = Int32.MaxValue;binding.SendTimeout = TimeSpan.FromMinutes(10);binding.OpenTimeout = TimeSpan.FromMinutes(10);binding.ReceiveTimeout = TimeSpan.FromMinutes(10);List<ZLBH.SL.App.WCFDataServiceRef.SqlParameterInfo> sqlParas = new List<ZLBH.SL.App.WCFDataServiceRef.SqlParameterInfo>();ZLBH.SL.App.WCFDataServiceRef.SqlParameterInfo sqlParaItem = new ZLBH.SL.App.WCFDataServiceRef.SqlParameterInfo();sqlParaItem.ParameterName = "BH";sqlParaItem.ParameterType = BizFieldType.文本;sqlParaItem.ParameterValue = bh;sqlParas.Add(sqlParaItem);WCFDataServiceRef.WCFDataServiceClient detailclient = new WCFDataServiceRef.WCFDataServiceClient(binding, address);detailclient.ExcuteDataTableCompleted +=delegate(object s,WCFDataServiceRef.ExcuteDataTableCompletedEventArgs e){if (e.Error == null){var ms = new MemoryStream(e.Result);DataTable dt = new DataTable();DataSet _ds = new DataSet();//解压缩using (var zr = new C1.C1Zip.C1ZStreamReader(ms))_ds.ReadXml(zr);dt = _ds.Tables[0];//绑定到DataGridView上this.DetailTab.DataContext =dt.DefaultView.Table.Select().First<DataRow>().GetRowView();}};detailclient.ExcuteDataTableAsync(sqlSel, 0, -1,sqlParas.ToArray());///<summary>///绑定分页///</summary>///<param name="sql"></param>///<param name="pageIndex">当前页索引</param>///<param name="pageSize">分页大小</param>///<param name="pager">分页控件</param>///<param name="selCol">是否有选择列</param>///<param name="grid">要绑定的DataGrid</param>///<param name="parameters"></param>private void BindGrid(string sql, int pageIndex, int pageSize, DataPager pager, bool selCol,Control grid, ZLBH.SL.App.WCFDataServiceRef.SqlParameterInfo[] parameters){var ms = new MemoryStream(e.Result);DataTable dt = new DataTable();DataSet _ds = new DataSet();using (var zr = new C1.C1Zip.C1ZStreamReader(ms))_ds.ReadXml(zr);dt = _ds.Tables[0];if (pager != null){if (pager.PageIndex <= 0){object recordcount;//获得总的行数_ds.ExtendedProperties.TryGetValue("RecordCount", out recordcount);pager.BindSource(Convert.ToInt16(recordcount), 10);//绑定到DataPager的PageIndex事件pager.PageIndexChanged -= (s1, e1) =>{BindGrid(sql, pager.PageIndex, pageSize, pager, selCol,grid, parameters);};pager.PageIndexChanged += (s1, e1) =>{BindGrid(sql, pager.PageIndex, pageSize, pager, selCol,grid, parameters);};}}if(selCol)dt.DefaultView.Table.Columns.Add("选择",typeof(bool)); }5、Silverlight端数据更新string sqlSel = "select * from 反馈需求记录 where 1=2";WCFDataServiceRef.WCFDataServiceClient detailclient = new WCFDataServiceRef.WCFDataServiceClient(binding, address);detailclient.ExcuteDataTableCompleted +=delegate(object s,WCFDataServiceRef.ExcuteDataTableCompletedEventArgs e){if (e.Error == null){var ms = new MemoryStream(e.Result);DataTable dt = new DataTable();DataSet _ds = new DataSet();//获取一个空的数据表结构using (var zr = new C1.C1Zip.C1ZStreamReader(ms))_ds.ReadXml(zr);dt = _ds.Tables[0];dt.TableName = "反馈需求记录";DataRow newRow = dt.NewRow();DataRowView rowView =(DataRowView)newRow.GetRowView();rowView.SetData("ID", Guid.NewGuid().ToString());….rowView.SetData("附件", fjbyte);dt.Rows.Add(newRow);_ds.Tables.Clear();_ds.Tables.Add(dt);//获得相应DataRowState的记录的字节数组值byte[] dtAdded = GetChanges(_ds,DataRowState.Added);byte[] dtModified = GetChanges(_ds,DataRowState.Modified);byte[] dtDeleted = GetChanges(_ds,DataRowState.Deleted);WCFDataServiceRef.WCFDataServiceClientupdateClient = newWCFDataServiceRef.WCFDataServiceClient(binding,address);updateClient.UpdateDataAsync(dtAdded, dtModified, dtDeleted, _ds.Tables[0].TableName);updateClient.UpdateDataCompleted += newEventHandler<UpdateDataCompletedEventArgs>(updateClient_UpdateDataComple ted);}};6、IIS配置支持Silverlight在IIS6.0中,允许 V4.0 Web服务扩展注册如果 没有注册到IIS,在FrameWork4.0目录下运行Aspnet_regiis.exe – i增加对XAP和XAML文件的支持在新建网站的HTTP选项中,选择添加“MIME类型”加入.xaml、.xap、.xbap扩展名.xap application/x-silverlight-app.xaml application/xaml+xml.xbap application/x-ms-xbap允许匿名访问选择Internet来宾账户7、IIS配置支持WCF在FrameWork4.0目录下运行ServiceModelReg.exe -ia8、WCF配置文件设置启动IIS,通过WcfTestClient.exe测试调用服务,或者通过http://webSite/WCF服务.svc 访问测试获取MetaData元数据进行测试。

LR的webservice三种使用方法_最新

LR的webservice三种使用方法_最新

利用LR发送xml文件常用的三种方法第一种(web_service_call):建立web_service_call函数,步骤如下:新建脚本点击Add Service Call ,在出现的页面中导入服务inport service,并选择url选择相关的函数相关输入参数和输出参数简单设置下点击确定就可以看到如下代码可以替换上面的红色字体第二种(soap import):首先用soupUi验证xml文件是否可以通过服务器接口,如果已经通过,在xml 文件中右击,save as 存储此此xml文件保存为1.xml。

新建webservice脚本导入soap找到之前的文件并加载,输入url 点击ok,出现如下的页面可以在此基础上进行相关的参数化。

第三种(http):网上有第三种方法,利用http方式发送请求。

注意在新建脚本的时候需要选择的协议是http协议,而非webservice协议。

切记用例脚本如下:Action(){//web_reg_save_param("Response","LB=", "RB=", LAST);web_add_header("SOAPAction","\"\"");//web_add_header("SOAPAction", "SampleMethod") 一样的效果lr_start_transaction("REQ");web_custom_request("Sample_Request","Method=POST","Mode=HTML","RecContentType=text/xml","EncType=text/xml; charset=utf-8","URL=http://10.17.36.122:9034/test","Body=<soapenv:Envelopexmlns:soapenv=\"/soap/envelope/\"xmlns:oip=\"/oip\">""<soapenv:Header></soapenv:Header>""<soapenv:Body>""<oip:webserviceTestReq>""<request>""<![CDATA[<?xml version=\"1.0\" encoding=\"UTF-8\"?><ResourceInfoReq><ResourceFlag>0</ResourceFlag><Resourc eStatus>0</ResourceStatus></ResourceInfoReq>]]>""</request>""</oip:webserviceTestReq>""</soapenv:Body>""</soapenv:Envelope>","LAST");lr_end_transaction("REQ", LR_AUTO);lr_think_time(1);//lr_output_message("Response is : %s\n", lr_eval_string("{Response}"));return 0;}注意要在脚本前面加上头:web_add_header("SOAPAction","\"\"");经过比较,http方式的脚本并发数可以达到很大。

搭建第一个web项目:实现用户的增删改查

搭建第一个web项目:实现用户的增删改查

搭建第⼀个web项⽬:实现⽤户的增删改查 好久没写这个web的代码了,再不写估计以前的也忘记的差不多了,赶紧复习下,顺便把⾃⼰的想法慢慢实现了。

最近在公司发现以前的项⽬有⽤easyUI搭建的。

赶紧copy回来学习下。

感觉写⽇志真的很有必要,⾃⼰总结的肯定要⽐每次从⽹上查阅来的靠谱。

每次搭建⼀个基本的web项⽬都都要查ssh的配置真的很忧伤啊,有⽊有 把jar包的截图截了⼀下,要不总是记不清该⽤到的基本jar有啥。

其中Struts中⽤到的jar有:commons-fileupload.jar commons-io.jar freemarker.jar ognl.jar struts2-core.jar xwork-core.jar 因为⽤到的是Struts的注解形式,所以加⼊了Struts的插件jar:struts2-convention-plugin.jar hibernate中⽤到的jar有:hibernate核⼼包:hibernate.jar hibernate必须包:antlr.jar commons-collection.jar dom4j.jar javassist.jar jta.jar slf-4j.jar 数据库连接池:c3p0 数据库驱动jdbc:mysql-connector.jar spring中⽤到的jar有:核⼼包:spring.jar AOP:aspectjrt.jar aspectjweaver.jar 动态代理(和aop也有关)cglib.jar ⽇志有关commons-logging.jar 其他的插件包需要的时候⼀个⼀个添加,上⾯的是最基本的。

好了,这回基本jar包也记录下来了。

下⾯开始好好研究下公司项⽬,实现最基本的⽤户增删改查了。

现在最⿇烦的就是项⽬⾥的基础通⽤类不知道该怎么部署,啊啊啊啊啊 马丹,把项⽬拷到公司电脑上之后包了个这个错误,我也是醉了好不,明明都是⼀样的MySQL和Eclipse,为啥就不⾏了呢。

Silverlight认证题(选择题)

Silverlight认证题(选择题)

0一、基础题(每题2分)1. 以下关于Silverlight应用程序的特点的说法,错误的是(D )A 支持丰富的数据格式和网络通信方式B 高质量的视频和音频C 使用现有的编程工具和.NET Framework编程模型D 和Flash一样,不支持搜索引擎优化(SEO)2 以下关于Silverlight应用程序的结构的说法,正确的是(A )A Silverlight 应用程一个派生自序必须有Application的类,负责初始化应用程序B Silverlight 应用程序最终编译成.xap文件,该文件符合W3C的XML标准、、Xaml文件符合C Silverlight 应用程序中必须有一个Page类,用于显示用户界面D Silverlight 应用程序必须运行在Aspxyem环境中3 以下关于Silverlight 应用程序的生命周期的说法,错误的是( B)A Silverlight 应用程序必须运行在本身的Runtime环境中B 先在客户端创建应用程序的执行环境,再下载Silverlight应用程序包(.xap文件)C 如果用户浏览器没有安装Silverlight.exe,则会提示用户下载安装D 在Silverlight 应用程序运行前,允许用户自定义启动画面4 以下关于XAML 的依赖属性的说法,错误的有是( A)A 依赖属性的访问方式与其他属性没有区别,通过"."运算符访问B 依赖属性必须由Static修饰C 依赖属性可以节约资源D 依赖属性必须使用DependencyProperty.Register()实现注册5 以下不属于XAML特性的是(D )A XAML 中的元素(标记)都对应.NET Framework中的某个类型B XAML 可以创建节点树C XAML 中通过元素和元素属性实现的功能都可以使用后台代码实现D XAML 中的元素不能被继承6 以下关于内容控件的说法,正确的是(A )A 内容控件都具有Content属性B ContentControl类直接派生自FormworkElement类C Border是内容控件D TextBlock是内容控件7 以下关于Grid控件的说法,错误的是( D)A Grid控件中的<RowDefinition>具有Height属性而没有Width属性B Grid控件中的<ColumnDefinition>具有Width属性而没有Height属性C Grid控件的布局作用类似于HTML中的<table>D Grid控件中必须有行和列的定义,才可以放置其他控件8 以下关于DataContext属性的说法,错误的是( C)A DataContext属性可以被一个元素的内部元素继承B 每个元素都具有DataContext属性C 如果父元素和子元素都具有DataContext属性,则父元素会覆盖子元素的属性值D 非列表控件在设置了DataContext属性之后才可以进行数据绑定9 以下关于数据绑定的描述,错误的是(B )A INotifyPropertyChanaged接口用于在数据源发生变化时通知Bind对象B Silverlight中的数据绑定与中的数据绑定没有区别C OneWay和TwoWay绑定模式必须实现INotifyPropertyChanged接口D 可以将数据对象作为XAML中的静态资源进行绑定10 以下对控件的描述,正确的有( B)A Popup控件ToolTip控件都用于为UI元素创建提示信息,并且可以自动隐藏B DataGrid控件中的列可以自动生成或在XAML中进行设计C ComboBox控件中的下拉列表项只能是静态创建的<ComboBoxItem>元素D Image元素的Source属性只能指向Silverlight程序中的图片11 以下关于全局样式的说法,错误的是(D )A 全局样式被定义为全局的静态资源B 全局样式和页面级别样式都通过Setter设置样式属性的值C Key属性值在全局样式中不能重复D 一种类型的控件只能定义一个全局样式12 以下关于控件模板的说法,错误的是(A )A 控件模板需要在App.xaml文件中定义,且必须作为全局静态资源进行定义B 控件模板能够使控件的外观,内容和结构保持一致C 控件模板可以使控件重用性更高, 有利于代码的维护D 控件只要具有Template属性,就可以定制模板13 以下关于路由事件的描述,不正确的有(C )A Silverlight中的路由事件就是事件冒泡B 路由事件是父控件接收和处理来自子控件的事件C 路由事件是子控件接收和处理来自父控件的事件D 鼠标事件MouseLeftButtonDown允许路由事件14 以下关于Silverlight用户控件的说法,不正确的有(C )A 所有的Silverlight用户界面都是由用户控件呈现B 用户控件只能被追加到其他的用户控件中进行呈现C 用户控件只能在当前应用程序中重用D 用户控件可以单独呈现15 以下关于自定义控件的说法,不正确的有(D )A 自定义控件可以在Silverlight类库创建,在任何Silverlight应用程序中重用B 自定义控件如果派生自Control类,则除非定制了控件模板,否则不会呈现任何UI界面C 自定义控件可以派生自现有的任何内置控件D 自定义控件不允许用户自己通过Content属性添加内容16 以下关于Path对象的描述,正确的有(AB )A Path可以绘制任何的Shape形状B Path对象的Data属性只能使用几何图形呈现内容C Path对象的Data属性中mini-language不区分大小写,例如,H和h绘制的水平线相同D Path对象在Data属性中通过mini-language绘制路径,C表示绘制二次方的贝赛尔曲线//注释C表示三次方的贝塞尔曲线,Q表示二次方贝塞尔曲线,A:椭圆曲线,Z结束命令17 以下关于画刷的描述,正确的有(B )A 图片刷ImageBrush必须与图片元素Image结合使用B 视频刷必须与MediaEelement元素结合使用C 线性渐变刷和径向渐变刷的作用完全相同D SolidColorBrush可以使用多种颜色填充元素18 以下关于Geometry图形和Shape形状之间的区别,说法正确的是(A )A Shape可以自我呈现B Geometry可以自我呈现C Geometry可以单独存在D Shape和Geometry绘制的都是3D图形19 以下关于元素变换的说法,错误的是( A)A RotateTransform默认按照逆时针方向进行旋转变换默认顺时针方向B ScaleTransform的ScaleX属性按照指定的比例沿X轴方向缩放变换C 矩阵变换通过修改结构体Matrix的矩阵实现D TransformGroup允许嵌套TransformGroup20 以下关于Image元素的Stretch属性的描述,错误的是( C)A 取值为None时,不拉伸图像B 取值为Uniform时,图像按比例拉伸,不破坏图像比例C 取值为Fill时,图像会填满规定的尺寸区域,不破坏图像比例D 取值为UniformToFill时,图像会被裁剪,但比例不会破坏21 以下关于WCF服务契约的描述,错误的是(D )A 服务契约必须以ServiceContact特性标识B 服务契约一般以接口定于C 服务契约中定义了服务操作,这些操作以OperationContract特性标识D 在一个WCF服务中可以没有服务契约22 以下关于WCF的终结点EndPoint的描述,正确的有( A)A WCF可以有一个或多个终结点B 地址指定了外部能够访问的操作契约指定了外部能够访问的操作BC说反了C 契约指定了终结点的位置地址制定了终结点的位置D 终结点中的绑定指定了它与外界通信的协议23 创建和调用WCF的步骤,正确的有(B )A 创建服务契约-> 自我承载服务-> 创建服务-> 客户端调用服务B 创建服务契约-> 创建服务-> 自我承载服务-> 客户端调用服务C 创建服务契约-> 创建服务-> 客户端调用服务-> 自我承载服务D 创建服务契约-> 创建服务-> 客户端调用服务-> IIS承载服务24 以下关于Silverlight调用WCF服务的说法,错误的是( BC)A Silverlight总是异步调用WCF服务B Silverlight只能调用同域的WCF服务// 注释,可以快于,加XMl文件C Silverlight调用的WCF服务必须寄宿在WEB服务器//注释,还可以自己承载D Silverlight默认不能跨域调用WCF服务25以下关于WCF服务器端配置的说法,错误的是( A)如果WCF服务由IIS承载,则不需要添加配置如果WCF服务是自我承载,可以通过配置或者托管代码监听和对外公开元数据如果文件可以是web.config,也可以是app.config配置文件中的endpoint节点用于配置服务器端终结点,包括地址绑定契约26 Silverlight中使用WebClient 对象与使用HttpWebRequest对象的区别在于( C)A WebClient是抽象类,HttpWebRequest不是抽象类// WebClient是实体类,HttpWebRestpuset是抽象类B HttpWebRequest通过事件实现异步调用C WebClient通过事件实现异步调用D WebClient回调函数运行在非UI线程上,所以回调函数中不能处理Silverlight控件27 以下关于用户独立存储空间的说法,不正确的是(A)A 操作系统独立存储空间的类位于System.IO命名空间下、、注释:SystemIO.IsolatedStorageFile中B 独立存储空间可以将数据永久存储在用户计算机中C 独立存储空间使用文件流保存文件D 独立存储空间存储在服务器端28 以下对于JSON数据序列化和反序列化的解释,错误的有(C )A Json数据可以使用第三方插件序列化B 反序列化是指将Json封装为实体对象C 序列化是指将Json封装为实体对象、、注释:序列化是将对象转化为Json 格式的字符串。

如何定时刷新silverlight里的datagrid

如何定时刷新silverlight里的datagrid

如何定时刷新silverlight里的datagrid
你这里涉及到两段式更新模式,一是数据库到RIA Service,一是RIA Service到SilverLight.
有Pull和Push两种模式:
先说Pull,SilverLight 采用轮询的模式调用RIA Service以检索数据是否更新,如果已更新,则调用RIA Service重新获取数据,可以使用HTTP Polling Duplex 绑定简化数据更新检索操作;
再说Push,使用WCF Callback契约,SilverLight向RIA Service订阅数据更新通知,RIA Service通过SqlDependency或OracleDependency向数据库订阅更新,当数据库有更新发生时,通知RIA Service,接下来分两种模式:
一,RIA Service收到更新通知后再调用SilverLight注册的回调接口通知SilverLight,SilverLight收到更新通知后,再调用RIA Service重新获取数据。

二,RIA Service收到更新通知后从数据库中查询出增量数据,然后调用SilverLight注册的回调接口,直接将增量数据推送给SilverLight,SilverLight收到增量数据后再更新自己的UI.。

利用Silverlight Toolkit丰富你的Web应用程序

利用Silverlight Toolkit丰富你的Web应用程序

AutoCompleteTextBox_Dynamic.xaml
18
一般控件- AutoCompleteBox
Silverlight Toolkit
支援DataGrid进行清单编辑 建立DataGrid字段样板 将字段样版改为
AutoCompleteBox
设定AutoCompleteBox 数据源
5
解决方案总是从问题而来
第三次需求访谈
User
- Develop RichWebApplication with Silverlight Toolkit
SA 嗯…这样?…这个…我们需要评估一 下
(………...)
6
我需要一个表格, 表格数据需要链接数据库 用户可以在表格中填入数据,可以实时编辑,可以实 时修改 我的表格要像Excel一样可以拖曳字段改变位置,数据 要可以排序,要可以固定或隐藏域…嗯…最好还有计 算功能…
AutoCompleteTextBox_DataGrid.
19
一般控件- WrapPanel
Silverlight Toolkit 可放置多个控件的容器 容器中的控件可依照容器的大小自动折行 可设定走向为水平或垂直
<Grid x:Name="LayoutRoot" Background="#FF191919"> <controls:WrapPanelMargin="8,8,8,8" Orientation="Horizontal"> <StackPanel Orientation="Horizontal" > <TextBlock Foreground="White" FontSize="16" Margin="5">姓名:</TextBlock> <TextBox Width="150" Height="30"></TextBox> </StackPanel> <StackPanel Orientation="Horizontal" > <TextBlock Foreground="White" FontSize="16" Margin="5">性别:</TextBlock> <TextBox Width="30" Height="30" Text="男"></TextBox> </StackPanel> ???

用WebService实现对数据库进行操作(添加+删除+修改)(转)

用WebService实现对数据库进行操作(添加+删除+修改)(转)

⽤WebService实现对数据库进⾏操作(添加+删除+修改)(转)表为User,字段有编号: int id,⽤户名:string UserName,密码:string UserPwd/// <summary>/// 添加/// </summary>/// <param name="name">⽤户名</param>/// <param name="pwd">密码</param>/// <returns></returns>[WebMethod]public int Add(string name,string pwd){SqlConnection conn = new SqlConnection("连接字符串");conn.Open();string sql = "intsert into User (UserName,UsersPwd) values(@UserName,@UsersPwd)";SqlCommand cmd = new SqlCommand(sql, conn);SqlParameter parn = new SqlParameter("@UserName", name);cmd.Parameters.Add(parn);SqlParameter parp = new SqlParameter("@UsersPwd", pwd);cmd.Parameters.Add(parp);int result = cmd.ExecuteNonQuery();conn.Close();cmd.Dispose();return result;}/// <summary>/// 修改/// </summary>/// <param name="name">⽤户名</param>/// <param name="pwd">密码</param>/// <param name="id">编号</param>/// <returns></returns>[WebMethod]public int Update(string name, string pwd, int id){SqlConnection conn = new SqlConnection("连接字符串");conn.Open();string sql = "update User set UserName=@UserName,UsersPwd=@UsersPwd where id=@id";SqlCommand cmd = new SqlCommand(sql, conn);SqlParameter parn = new SqlParameter("@UserName", name);cmd.Parameters.Add(parn);SqlParameter parp = new SqlParameter("@UsersPwd", pwd);cmd.Parameters.Add(parp);SqlParameter pari = new SqlParameter("@id", id);cmd.Parameters.Add(pari);int result = cmd.ExecuteNonQuery();conn.Close();cmd.Dispose();return result;}/// <summary>/// 删除/// </summary>/// <param name="id">编号</param>/// <returns></returns>[WebMethod]public int Delete(int id){SqlConnection conn = new SqlConnection("连接字符串");conn.Open();string sql = "delete from User where id=@id";SqlCommand cmd = new SqlCommand(sql, conn);SqlParameter pari = new SqlParameter("@id", id); cmd.Parameters.Add(pari);int result = cmd.ExecuteNonQuery();conn.Close();cmd.Dispose();return result;}。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Silverlight利用WebService进行增删改查目录1 新建空白解决方案SLWebServiceTestSln (1)2 新建Silverlight应用程序SL5 (1)3 建立数据模型 (2)4 Web项目配置 (4)5 数据转换建立WebService (5)6 在Silverlight应用程序项目中引用WebService (6)7 源码 (14)1新建空白解决方案SLWebServiceTestSln略2新建Silverlight应用程序SL53建立数据模型新建数据库TestDB,在库中新建表Students,表脚本如下:CREATE TABLE[dbo].[Students]([StuId][int]IDENTITY(1,1)NOT NULL, [StuName][varchar](50)NULL,[GradeId][int]NULL,[Age][int]NULL,[Sex][varchar](2)NULL)ON[PRIMARY]新建Silverlight类库项目DBModels删除自动生成的Class1.cs。

在SL5项目中引用DBModels。

新建类StuModels.cs在此文件中新建类Students,内容如下:namespace DBModels{public partial class Students{public int StuId { get; set; }public string StuName { get; set; }public string Sex { get; set; }public int GradeId { get; set; }public int Age { get; set; }}}4Web项目配置在站点SL5.Web中,建立App_Code目录,在目录中新建SQLHelper.cs,内容与网上通用的SQLHelper相同,此处不再赘述。

5数据转换建立WebService在SL5.Web项目中引用DBModels项目,然后创建WebService,名称为:StuService.asmx增加下面方法:public class StuService : System.Web.Services.WebService{[WebMethod]public List<BaseVars> GetListBaseVars(string sql){List<BaseVars> lr = new List<BaseVars>();using (DataSet ds = SqlHelper.ExecuteDataSet(sql)){if (ds == null || ds.Tables[0].Rows.Count < 0){return null;}lr = ListBaseDataSet.DataSetToListBaseVars(ds, 0);}return lr;}[WebMethod]public List<Students> GetList(string sql){List<Students> ls = new List<Students>();using (DataSet ds = SqlHelper.ExecuteDataSet(sql)){if (ds == null || ds.Tables[0].Rows.Count < 0){return null;}DataTable dt = ds.Tables[0];foreach (DataRow dr in dt.Rows){ls.Add(new Students() { StuId=Int32.Parse(dr["StuId"].ToString()), StuName = dr["StuName"].ToStr ing(), Sex = dr["Sex"].ToString(), Age = Int32.Parse(dr["Age"].ToString()) });}}return ls;}[WebMethod]public int UpdateStu(Students stu){string sql = "UPDATE Students SET stuName='" + stu.StuName + "',Age=" + stu.Age + " WHERE stuId=" + stu. StuId;int UpdatedRowsCount = SqlHelper.ExecuteNonQuery(sql);return UpdatedRowsCount;}[WebMethod]public void InsertStu(string stuName, string sex, int age){Students stu = new Students() { StuName = stuName, Sex = sex, Age = age };string sql = "INSERT INTO Students(stuName,Sex,Age) VALUES('" + stu.StuName + "','" + stu.Sex + "'," + s tu.Age + ") ";SqlHelper.ExecuteNonQuery(sql);}[WebMethod]public bool Del(int stuid){string sql = "DELETE Students WHERE stuid=" + stuid;int UpdatedRowsCount = SqlHelper.ExecuteNonQuery(sql);if (UpdatedRowsCount == 0){return false;}else{return true;}}}6在Silverlight应用程序项目中引用WebService1.首先添加对项目DBModels的引用,以便使用数据模型。

2.添加服务引用。

引用后设置集合类型:在MainPage.xaml前台代码:xmlns:d="/expression/blend/2008"xmlns:mc="/markup-compatibility/2006"mc:Ignorable="d"xmlns:sdk="/winfx/2006/xaml/presentation/sdk"><UserControl.Background><LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0"><GradientStop Color="#FF1847EE"/><GradientStop Color="#FFFFFFFF" Offset="1"/><GradientStop Color="#FF7390F4" Offset="0.125"/></LinearGradientBrush></UserControl.Background><Canvas x:Name="LayoutRoot" Background="Silver" Height="647" Width="400"><StackPanel><TextBlock x:Name="info" OpacityMask="#FF181111" Foreground="#FF5A5959"/><sdk:DataGrid AutoGenerateColumns="False" Height="140" HorizontalAlignment="Left" Name="dataGrid1" Vert icalAlignment="Top" Width="355" CellEditEnding="dataGrid1_CellEditEnding" CellEditEnded="dataGrid1_CellEditEnded" Ca nvas.Left="0" ><sdk:DataGrid.Background><LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0"><GradientStop Color="gray"/><GradientStop Color="#FFFFFFFF" Offset="1"/></LinearGradientBrush></sdk:DataGrid.Background><sdk:DataGrid.BorderBrush><LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0"><GradientStop Color="#FFA3AEB9"/><GradientStop Color="#FF8399A9" Offset="0.375"/><GradientStop Color="#FF718597" Offset="0.571"/><GradientStop Color="#FF617584" Offset="1"/></LinearGradientBrush></sdk:DataGrid.BorderBrush><sdk:DataGrid.Columns><sdk:DataGridTemplateColumn Header="选择"><sdk:DataGridTemplateColumn.CellTemplate><DataTemplate><StackPanel Orientation="Horizontal"><CheckBox Name="ck" Tag="{Binding StuId,Mode=TwoWay}"></CheckBox></StackPanel></DataTemplate></sdk:DataGridTemplateColumn.CellTemplate></sdk:DataGridTemplateColumn><sdk:DataGridTextColumn Header="编号" Binding="{Binding StuId,Mode=TwoWay}"></sdk:DataGridTextColumn><sdk:DataGridTextColumn Header="姓名" Binding="{Binding StuName,Mode=TwoWay}"></sdk:DataGridTextColumn><sdk:DataGridTextColumn Header="年龄" Binding="{Binding Age,Mode=TwoWay}"></sdk:DataGridTextColumn><sdk:DataGridTemplateColumn Header="操作"><sdk:DataGridTemplateColumn.CellTemplate><DataTemplate><StackPanel Orientation="Horizontal"><Button x:Name="btnDel" Tag="{Binding StuId}" Content="删除" BorderBrush="#FFC1B5B5" Foreground="Black" Click="btnDel_Click" /></StackPanel></DataTemplate></sdk:DataGridTemplateColumn.CellTemplate></sdk:DataGridTemplateColumn></sdk:DataGrid.Columns></sdk:DataGrid><sdk:DataPager Height="26" HorizontalAlignment="Left" Name="dataPager1" PageSize="2" VerticalAlignment=" Top" Width="355" DisplayMode="FirstLastPreviousNextNumeric" Source="{Binding ItemsSource,ElementName=dataGrid1}" Can vas.Left="0" /></StackPanel><Rectangle Height="40" Width="368" Canvas.Left="10" Canvas.Top="190" RadiusX="8" RadiusY="8" Stroke="{x:Null }"><Rectangle.Fill><LinearGradientBrush EndPoint="0.507000029087067,-0.291999995708466" StartPoint="0.507000029087067,1 .83299994468689"><GradientStop Color="#FF2D2D2F" Offset="0.504"/><GradientStop Color="#FFC1BCBC" Offset="1"/><GradientStop Color="#FF999292" Offset="1"/></LinearGradientBrush></Rectangle.Fill></Rectangle><CheckBox Canvas.Left="35" Canvas.Top="198" Content="全选" Height="16" Name="CBAll" Click="CBAll_Click" /> <Button Canvas.Left="85" Canvas.Top="195" Content="删除" Height="23" Name="BtnDel" Width="50" Click="BtnDel_Click" /><Rectangle Height="97" Width="376" Canvas.Left="8" Canvas.Top="235" Stroke="{x:Null}" RadiusX="8" RadiusY="8 "><Rectangle.Fill><LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0"><GradientStop Color="#FF2D2D2F" Offset="0.027"/><GradientStop Color="#FFC1BCBC" Offset="1"/><GradientStop Color="#FF999292" Offset="1"/></LinearGradientBrush></Rectangle.Fill></Rectangle><TextBlock x:Name="TextBlock" Canvas.Top="247" Canvas.Left="60" Text="姓名:" Foreground="#FFF7F6F6"/> <TextBox x:Name="txtname" Width="122" Canvas.Left="116" Canvas.Top="247" Background="#FFFBF6F6" /><TextBlock x:Name="TextBlock_Copy" Canvas.Left="60" Canvas.Top="280" Text="性别:" Foreground="#FFFBF9F9"/><ComboBox Canvas.Left="117" Canvas.Top="276" Height="23" Name="cbsex" Width="120"><ComboBoxItem Content="男" Tag="M" /><ComboBoxItem Content="女" Tag="F" /></ComboBox><TextBlock Canvas.Left="60" Canvas.Top="310" Height="15" Name="textBlock1" Text="年龄:" Foreground="White" />后台代码:using System;using System.Collections.Generic;using System.Linq;using ;using System.Windows;using System.Windows.Controls;using System.Windows.Documents;using System.Windows.Input;using System.Windows.Media;using System.Windows.Media.Animation;using System.Windows.Shapes;using System.Windows.Data;namespace SL5{public partial class MainPage : UserControl{int originalNum;//记录初始时表中的数据总数StuService.StuServiceSoapClient client = new StuService.StuServiceSoapClient();public MainPage(){InitializeComponent();client = new StuService.StuServiceSoapClient();client.GetListCompleted += (s,e) => {List<StuService.Students> ls = e.Result;//dataGrid1.ItemsSource = ls;PagedCollectionView pcv = new PagedCollectionView(e.Result);dataGrid1.ItemsSource = pcv;originalNum = e.Result.Count;info.Text = "共有人员" + originalNum.ToString() + "条,具体如下:";};client.InsertStuCompleted += (s1, e1) =>{if (e1.Error == null){MessageBox.Show("添加成功!");//即时更新datagridbindDg();txtname.Text = "";cbsex.SelectedItem = 0;txtage.Text = "";}else{MessageBox.Show(e1.Error.ToString());//}};client.UpdateStuCompleted += (S, E) =>{if (E.Error == null){bindDg();}else{MessageBox.Show(E.Error.ToString());//}};client.DelCompleted += (S, E) =>{if (E.Error == null){MessageBox.Show("删除成功!");bindDg();}else{MessageBox.Show(E.Error.ToString());//}};bindDg();addButton.Click += (s, e) =>{if (txtname.Text.Trim() == ""){MessageBox.Show("请填写姓名");}else if (txtage.Text.Trim() == ""){MessageBox.Show("请填写年龄");}else{ComboBoxItem seled = cbsex.SelectedItem as ComboBoxItem;string sex = seled.Content.ToString();client.InsertStuAsync(txtname.Text.Trim(), sex, Int32.Parse(txtage.Text.Trim())); }};ReWriteButton.Click += (s, e) =>{txtname.Text = "";txtage.Text = "";cbsex.SelectedItem = 0;};}private void bindDg(){string sql = "SELECT * FROM Students";client.GetListAsync(sql);}//(sender as Button).Tag.ToString() 获取 Button Tag 值private void btnDel_Click(object sender, RoutedEventArgs e){client.DelAsync(Convert.ToInt32((sender as Button).Tag.ToString()));}#region自定义列的表格操作private void dataGrid1_CellEditEnding(object sender, DataGridCellEditEndingEventArgs e){dataGrid1.BeginEdit();}private void dataGrid1_CellEditEnded(object sender, DataGridCellEditEndedEventArgs e){StuService.Students stu = dataGrid1.SelectedItem as StuService.Students;client.UpdateStuAsync(stu);}private void CBAll_Click(object sender, RoutedEventArgs e){if (dataGrid1.ItemsSource != null){if (this.CBAll.IsChecked.Value)//全选{foreach (object ovj in dataGrid1.ItemsSource){CheckBox cb1 = dataGrid1.Columns[0].GetCellContent(ovj).FindName("ck") as CheckBox; //cb 为cb1.IsChecked = true;}}else//全取消{foreach (object obj in dataGrid1.ItemsSource){CheckBox cb2 = dataGrid1.Columns[0].GetCellContent(obj).FindName("ck") as CheckBox;cb2.IsChecked = false;}}}}private void BtnDel_Click(object sender, RoutedEventArgs e){foreach (object obj in dataGrid1.ItemsSource){CheckBox cb2 = dataGrid1.Columns[0].GetCellContent(obj).FindName("ck") as CheckBox;if (Convert.ToBoolean(cb2.IsChecked)){client.DelAsync(Convert.ToInt32(cb2.Tag.ToString()));}}}#endregion}public partial class Students{private int stuid;public int StuId{get { return stuid; }set { stuid = value; }}private string stuName;public string StuName{get { return stuName; }set { stuName = value; }}private string sex;public string Sex{get { return sex; }set { sex = value; }}private int gradeId;public int GradeId{get { return gradeId; }set { gradeId = value; }运行效果:7源码SLWebServiceTestSln.rar。

相关文档
最新文档