WebService的创建和使用——文件名称生成器

简介

之前做过一个文件名称生成器,通过Webservice读取XML文件并将其通过Json传到客户端中的combobx,用户通过combobox选择要生成文件的名称模板,点击生成则会产生一个文件名称并保存到数据库中。

涉及到的编程内容

    webservice,XML,Access,Winform

Webservice的创建

      (1)创建空Web应用程序     (2)添加Web服务(asmx)

(3)在[WebMethod]下写要使用的方法

   (4)通过浏览器查看是否创建好服务

   (5)发现已经建立了该服务

Webservice的使用

  (1)创建一个新窗体,添加服务引用

(2)点击“发现”找到相应的websevice,再点击“高级”

    (3)点击“添加Web引用”

    (4)点击“此解决方案中的Web服务”

    (5)点击“添加引用”

   (6)在窗体中引用即可

XML文件的样式:

数据库表的字段:

Winform程序界面:

            

Webservice调用类的方法:

      (1)在webservice中调用类的方法来完成某些操作,而不是直接写在webservice里。

(2)从XML文件读取信息(界面一中的combobox):

 public List<string> BackSchemaList()
        {
            List<string> name = new List<string>();
            XmlDocument doc = new XmlDocument();
            doc.Load(@"F:\Winform Project\Namer\FieldList.xml");
            XmlNode xn = doc.SelectSingleNode("FieldList");
            XmlNodeList xnl = xn.ChildNodes;
            foreach (XmlNode xn1 in xnl)
          {
                   string fieldvalue = "";
                   XmlElement xe = (XmlElement)xn1;
                   string listnumber = xe.GetAttribute("number").ToString();
                   string listtype = xe.GetAttribute("type").ToString();
                   XmlNodeList xnl0 = xe.ChildNodes;
               foreach (XmlNode xn2 in xnl0)
               {
                   XmlElement xe1 = (XmlElement)xn2;
                   fieldvalue += xe1.GetAttribute("Value").ToString();
               }
               name.Add(fieldvalue);
               name.Add(listtype);
          }
            return name;
        }

(3)选取一个模板进行模糊查询,给新生成的文件名称加上个序列号:

 public string generatedata(string s1,string s2)
        {
            string str_provider = "Provider=Microsoft.Ace.OLEDB.12.0;";
            string str_source = "Data Source=F:/Winform Project/Namer/Namer.accdb;Persist Security Info=False;";  //数据源路径
            string str_connection = str_provider + str_source;  //连接字符串
            int xuliehao = 1;
            OleDbConnection cnn;
            OleDbCommand cmd;
            OleDbDataReader datar;
            string str_sql1 = "SELECT name FROM T_name WHERE name Like ‘"+s1+"%‘;";
            cnn = new OleDbConnection(str_connection);
            cmd = new OleDbCommand(str_sql1, cnn);
            cnn.Open();
            datar = cmd.ExecuteReader();
            while (datar.Read())
            {
                if (datar["name"].ToString() == null)
                {
                    break;
                }
                else { xuliehao++; }
            }
            cnn.Close();
            string number = string.Format("{0:000}", xuliehao);
            s1 += number;
            string dt = DateTime.Now.ToString();
            string str_sql2 = "insert into T_name (name,code,timeNow,type) values (‘"+s1+"‘,‘"+number+"‘,‘"+dt+"‘,‘"+s2+"‘);";
            cnn = new OleDbConnection(str_connection);
            cmd = new OleDbCommand(str_sql2, cnn);
            cnn.Open();
            int i = cmd.ExecuteNonQuery();
            cnn.Close();
            string newname = s1;
            return newname;
        }

(4)读取一条信息并显示其详细字段:

 public List<List<string>> Backonelist(int int_index,string str_type)
        {
            List<List<string>> documentlist = new List<List<string>>();
            XmlDocument doc = new XmlDocument();
            doc.Load(@"F:\Winform Project\Namer\FieldList.xml");
            XmlNode xn = doc.SelectSingleNode("FieldList");
            XmlNodeList xnl = xn.ChildNodes;
            foreach (XmlNode xn1 in xnl)
            {
                XmlElement xe = (XmlElement)xn1;
                XmlNodeList xnl0 = xe.ChildNodes;
                if (xe.GetAttribute("number").ToString() == (int_index + 1).ToString() && xe.GetAttribute("type").ToString() == str_type)
                {
                    foreach (XmlNode xn2 in xnl0)
                    {
                        List<string> field = new List<string>();
                        XmlElement xe1 = (XmlElement)xn2;
                        field.Add(xe1.GetAttribute("Index").ToString());
                        field.Add(xe1.GetAttribute("Type").ToString());
                        field.Add(xe1.GetAttribute("Name").ToString());
                        field.Add(xe1.GetAttribute("Value").ToString());
                        documentlist.Add(field);
                    }
                }
            }
            return documentlist;
        }

(5)对XML进行插入信息操作:

 public bool insert(string s)
        {
            bool state = true;
            int i = 1;
            List<List<string>> one_document = new List<List<string>>();
            one_document = JsonConvert.DeserializeObject<List<List<string>>>(s);
            XmlDocument doc = new XmlDocument();
            doc.Load(@"F:\Winform Project\Namer\FieldList.xml");
            XmlNode xn = doc.SelectSingleNode("FieldList");
            XmlElement element = doc.CreateElement("list");
            foreach (XmlNode node in xn.ChildNodes)
            {
                XmlElement xe = (XmlElement)node;
                if (xe.GetAttribute("type").ToString() == one_document[0][0])
                {
                   i++;
                }
            }
            element.SetAttribute("number", i.ToString());
            element.SetAttribute("type", one_document[0][0]);
            foreach (List<string> list in one_document)
            {
                   string fieldindex = list[1];
                   string fieldtype = list[2];
                   string fieldname = list[3];
                   string fieldvalue = list[4];
                   XmlElement element2 = doc.CreateElement("Field");
                   element.AppendChild(element2);
                   element2.SetAttribute("Index", fieldindex);
                   element2.SetAttribute("Type", fieldtype);
                   element2.SetAttribute("Name", fieldname);
                   element2.SetAttribute("Value", fieldvalue);
            }
            xn.AppendChild(element);
            doc.Save(@"F:\Winform Project\Namer\FieldList.xml");
            return state;
        }

(6)对XML进行编辑信息操作:

 public bool EditDATA(string str_s)
        {
            bool flag = true;
            int temp = 1;
            List<List<string>> one_document = new List<List<string>>();
            one_document = JsonConvert.DeserializeObject<List<List<string>>>(str_s);
            List<string> basicinfo = new List<string>();
            basicinfo=one_document[0];
            string typename = basicinfo[0];
            string preview = basicinfo[1];
            int temp_documentindex = Convert.ToInt32(basicinfo[2]);
            int int_documentindex = temp_documentindex + temp;
            string documentindex = int_documentindex.ToString();
            one_document.Remove(one_document[0]);
            XmlDocument doc = new XmlDocument();
            doc.Load(@"F:\Winform Project\Namer\FieldList.xml");
            XmlNode xn = doc.SelectSingleNode("//list[@ number=‘" + documentindex + "‘][@ type=‘" + typename + "‘]");
            XmlNodeList xnl = xn.ChildNodes;
            List<XmlNode> xmllist = new List<XmlNode>();
            foreach (XmlNode item in xnl)
            {
                xmllist.Add(item);
            }
            foreach (XmlNode item in xmllist)
            {
                item.ParentNode.RemoveChild(item);
            }
            foreach (List<string> list in one_document)
            {
                string fieldindex = list[0];
                string fieldtype = list[1];
                string fieldname = list[2];
                string fieldvalue = list[3];
                XmlElement element2 = doc.CreateElement("Field");
                xn.AppendChild(element2);
                element2.SetAttribute("Index", fieldindex);
                element2.SetAttribute("Type", fieldtype);
                element2.SetAttribute("Name", fieldname);
                element2.SetAttribute("Value", fieldvalue);
                if (element2.GetAttribute("Name").ToString() == "category")
                {
                    XmlElement element3 = doc.CreateElement("CodeList");
                    element2.AppendChild(element3);
                    for (int i = 1; i <= 4; i++)
                    {
                        string[] array = { "personal", "work", "play", "trans" };
                        XmlElement element4 = doc.CreateElement("CodeWord");
                        element3.AppendChild(element4);
                        element4.SetAttribute("Code", i.ToString());
                        element4.SetAttribute("Description", array[i - 1]);
                    }
                }
            }
            doc.Save(@"F:\Winform Project\Namer\FieldList.xml");
            return flag;
        }

最后效果:

本文中对部分相对比较重要的代码进行了交代,希望对大家有点帮助。

时间: 2024-10-06 21:00:53

WebService的创建和使用——文件名称生成器的相关文章

WebService 的创建,部署和使用

WebService,即Web服务,能使得运行在不同机器上的不同应用无须借助,专门的第三方软件或硬件,就可相互交换数据或集成. 第一次选择WebService,是为了替代数据库远程连接.我们都知道当SQL允许远程时,则要打开某一端口.但这一点在我们已经部署好的服务器上,却是不被允许的,于是就选择WebService来代替了.当然现在我们也可以选择WCF来完成.不过这不是我们今天的主题. WebService返回的数据为XML,这是我们都很熟悉的一种数据方式,大大方便了我们的工作当然,WebSer

【转】WebService 的创建,部署和使用

WebService,即Web服务,能使得运行在不同机器上的不同应用无须借助,专门的第三方软件或硬件,就可相互交换数据或集成. 第一次选择WebService,是为了替代数据库远程连接.我们都知道当SQL允许远程时,则要打开某一端口.但这一点在我们已经部署好的服务器上,却是不被允许的,于是就选择WebService来代替了.当然现在我们也可以选择WCF来完成.不过这不是我们今天的主题. WebService返回的数据为XML,这是我们都很熟悉的一种数据方式,大大方便了我们的工作当然,WebSer

WebService的创建和部署以及通过反射动态调用WebService

一.在ASP.NET中创建WebService 首先我们先创建一个ASP.NET Web应用程序,此处我们以VS2017为例 点击新创建的项目,右键添加新建项,选择Web服务,输入名称点击添加 这样我们的基础的WebService就创建好了 接下来我们填加一个webservice的测试方法,并且打上特性标签WebMethod,只有打上特性标签WebMethod并且访问修饰符设置为public后外部才能调用到该方法 using System; using System.Collections.Ge

WSDL WebService的创建和使用实例

一. WSDL WebService的创建: 1.创建[Web Service Project]: WebServices Framework要选JAX-WS: 2.写一个简单的测试用例: package com.webservice; public class WebService{ public String printData(String printerName){ String strRet = "Welcome to use WebService, " + printerN

系统中含有点的文件夹或文件名称不显示

刚装的系统,发现有些文件夹名字不显示,于是使用去箭头的批处理文件执行之后显示了,如eclipse创建的.metadata文件夹名称 将以下内容复制到文本文件中,将文件名改为bat为后缀的文件名(a.bat) reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Icons" /v 29 /d "%systemroot%\system32\imageres.dll

linux和windows文件名称长度限制

Linux文件名称的长度限制是255个字符 windows下全然限定文件名称必须少于260个字符,文件夹名必须小于248个字符. linux下文件数.文件夹数.文件名称长度的各种限制 下面測试都是在没有优化或改动内核的前提下測试的结果 1. 測试目的:ext3文件系统下filename最大字符长度  測试平台:RHEL5U3_x64  測试过程:LENTH=`for i in {1..255};do for x in a;do echo -n $x;done;done`touch $LENTH当

Android 使用Log4j把日志写入SD卡,动态修改输出文件名称

一.Log4j简单使用 1. 下载log4j.jar http://logging.apache.org/log4j/2.x/ 2. 创建Java代码 public class Loggers { public static Logger logger = Logger. getLogger(Loggers. class); public static void init() { try { PatternLayout patternLayout = new PatternLayout(); p

.Net 平台WebService的创建、部署和使用介绍

.NET平台内建了对Web Service的支持,包括Web Service的构建和使用.与其它开发平台不同,使用.NET平台,你不需要其他的工具或者SDK就可以完成Web Service的开发了..NET Framework本身就全面支持Web Service,包括服务器端的请求处理器和对客户端发送和接受SOAP消息的支持.下来我们就使用 一个非常简单的示例来介绍Web Service的创建.部署和使用. 一.用Visual Studio创建一个最简单的Web Service 首先,打开VS,

ThinkPHP3.2.3完整版创建前后台入口文件 http://jingyan.baidu.com/article/7e4409533fc1092fc1e2ef53.html

ThinkPHP3.2.3完整版创建前后台入口文件 1 2 3 4 5 6 7 分步阅读 ThinkPHP是为了简化企业级应用开发和敏捷WEB应用开发而诞生的优秀的国产php框架,值得我们去探索学习"创建前台-后台入口文件" 工具/原料 Zend Studio 13.0.0(其他版本都行) 下载地址:http://pan.baidu.com/s/1hrddyh2 含thinkPHP完整版的项目 下载地址:http://www.thinkphp.cn/ windows 操作系统电脑一台