C#利用WinForm调用WebServices实现增删改查
实习导师要求做一个项目,用Winform调用WebServices实现增删改查的功能。写下这篇博客,当做是这个项目的总结。如果您有什么建议,可以给我留言。欢迎指正。
1、首先,我接到这个项目的时候,根本不清楚什么是WebServices,所以第一步,我要搞清楚什么是WebServices。现在有个模糊的概念,比如,中国天气网想把每天的天气状况给用户查询,它当然不可能让用户直接访问它的数据库。所以,中国天气网就把查询天气之类的方法写进WebServices中,让用户去WebServices调用这些接口,从而达到查询天气的目的。
2、紧接着,由于我们是发布一个WebServices来让其他人调用。所以我们要在本机上配置IIS服务器。具体步骤如下:
1-->打开计算机,找到卸载或更改程序
2-->找到启用或关闭Windows功能

3-->把下面这三个东西全部点上(我也不知道怎么点,我把所有的都点上了)

4-->点击确定,此时我们的IIS应该就已经配置完毕了。
5-->现在我们去服务中找到IIS服务。看到此选项,应该可以说明,我们的IIS配置完毕了。

3、IIS配置完毕之后,此时,我们便可以在VS中编写Web程序。
1-->新建一个空的Web应用程序


2-->这个时候我们就会看到有一个ceshiWebServices的项目,右击添加新项,选择Web服务,名称可以随意。

3-->此时我们可以看到一个默认的Hello World方法

4-->下面我们来将此Web服务发布,步骤如下:(1)首先右击项目,点击发布。(2)接着按照图片的步骤来





此时,我们的Web服务应该已经发布完毕。
5-->下面,我们去IIS服务器中,浏览看一下。

6-->此时要注意的是,我们需要启用目录浏览

7-->找到右面板,点击浏览。如果没有问题,将会出现以下界面。(有时候会报出一些莫名奇妙的错误,如403,404,409之类的,遇到此类问题,百度一下)

8-->目前为止,我们发布WebServices就成功了。
4、下面我们就用Winform程序来调用此WebServices,因为我的目的是利用调用此WebServices实现增删改查功能,所以接下来就直接上代码。
1-->WebServices增删改查功能代码实现(仅 1 public class Infos : System.Web.Services.WebService
{
[WebMethod]
public string HelloWorld()
{
return "Hello World";
}
[WebMethod]
public DataSet select(int userid,string username)
{
try
{
DataSet ds = new DataSet();
string constr = "Data source=.;Initial Catalog=DB_UserSystem;User ID=sa;Password=123456";
using (SqlConnection con = new SqlConnection(constr))
{
if (con.State == ConnectionState.Closed)
{
con.Open();
}
string sql = "select * from TB_UserInfo where userid='" + userid + "' or username='" + username + "'";
SqlDataAdapter da = new SqlDataAdapter(sql, con);
da.Fill(ds);
con.Close();
}
return ds;
}
catch (Exception ex)
{
return new DataSet();
}
}
[WebMethod]
public bool add(string UserID, string UserName, string UserSex, string UserAge, string UserPassword, string UserType)
{
string constr = "Data source=.;Initial Catalog=DB_UserSystem;User ID=sa;Password=123456";
using (SqlConnection con = new SqlConnection(constr))
{
string sql = "insert into TB_UserInfo values ('"+UserID+"','"+UserName+"','"+UserSex+"','"+UserAge+"','"+UserPassword+"','"+UserType+"')";
using (SqlCommand cmd = new SqlCommand(sql, con))
{
try
{
con.Open();
cmd.ExecuteNonQuery();
con.Close();
return true;
}
catch (Exception ex)
{
return false;
}
}
}
}
[WebMethod]
public bool delete(string UserID,ref string errormessage)
{
string constr = "Data Source=.;Initial Catalog=DB_UserSystem;User ID=sa;Password=123456";
using (SqlConnection con = new SqlConnection(constr))
{
string sql ="delete from TB_UserInfos where UserID='"+UserID+"'";
using (SqlCommand cmd = new SqlCommand(sql, con))
{
try
{
con.Open();
cmd.ExecuteNonQuery();
con.Close();
return true;
}
catch (Exception ex)
{
errormessage=ex.Message.ToString();
return false;
}
}
}
}
[WebMethod]
public bool update(string UserID, string UserName, string UserSex, string UserAge, string UserPassword, string UserType, ref string errormessage)
{
string constr = "Data Source=.;Initial Catalog=DB_UserSystem;User ID=sa;Password=123456";
using (SqlConnection con = new SqlConnection(constr))
{
string sql = "update TB_UserInfo set UserName='"+UserName+"',UserSex='"+UserSex+"',UserAge='"+UserAge+"',UserPassword='"+UserPassword+"',UserType='"+UserType+"' where UserID='"+UserID+"'";
using (SqlCommand cmd = new SqlCommand(sql, con))
{
try
{
con.Open();
cmd.ExecuteNonQuery();
con.Close();
return true;
}
catch (Exception ex)
{
errormessage = ex.Message.ToString();
return false;
}
}
}
}
}
2-->因为我的WinForm已经做好了,所以接下来就在此基础上进行操作。
界面如下:

3-->我们首先要引用Web服务的地址,我们找到刚才发布Web服务的地址,http://localhost:1666/Infos.asmx,由于我是直接在我以前做的基础上做的,上一个Web服务是新建的,里面方法什么的也没有写,所以我就贴了我做好了Web地址。

这个时候找到WinForm所在的项目,右击-->添加-->服务引用

地址输入我们之前发布WebServices的地址,由于我已经添加引用,这里我就不再折腾一遍了。
4-->由于我们要调用WebServices,所以我们先要将它实例化。
代码如下:(仅供参考)
由于我也是今天刚在老师的指导下完成,对于一些代码也是一知半解。所以这里就直接贴上来,方便明天继续思考和练习。
namespace WindowsFormsApplication14
{
public partial class Form1 : Form
{ private ServiceReference.InfosSoapClient ws; //这样就省得在每一个方法中都实例化了
public Form1()
{
InitializeComponent();
} private void Form1_Load(object sender, EventArgs e)
{
// TODO: 这行代码将数据加载到表“dB_UserSystemDataSet.TB_UserInfo”中。您可以根据需要移动或删除它。
//this.tB_UserInfoTableAdapter.Fill(this.dB_UserSystemDataSet.TB_UserInfo);
//LoadData();
ws = new ServiceReference.InfosSoapClient(); //同上
} private void button1_Click(object sender, EventArgs e)
{ string UserID = txtUserID.Text.Trim();
string UserName = txtUserName.Text.Trim();
string UserSex = this.comboBox2.Text;
string UserAge = txtUserAge.Text;
string UserPassword = txtUserPassword.Text;
string UserType = this.comboBox3.Text; string errorinfo = ""; if (ws.add(txtUserID.Text, txtUserName.Text, this.comboBox2.Text, txtUserAge.Text, txtUserPassword.Text, this.comboBox3.Text, ref errorinfo))
{
MessageBox.Show("注册成功" + errorinfo);
}
else
{
MessageBox.Show("注册失败" + errorinfo);
}
} private void button2_Click(object sender, EventArgs e)
{
int UserAge=; try
{
int.Parse(txtUserAge.Text);
UserAge = Convert.ToInt32(txtUserAge.Text);
}
catch (Exception)
{
MessageBox.Show("输入不正确", "操作提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning);
return;
} string errorinfo = "";
if (ws.update(txtUserID.Text,txtUserName.Text,this.comboBox2.Text,txtUserAge.Text,txtUserPassword.Text,this.comboBox3.Text,ref errorinfo))
{
MessageBox.Show("更新成功" );
}
else
{
MessageBox.Show("更新失败" );
}
} private void button3_Click(object sender, EventArgs e)
{
DialogResult result = MessageBox.Show("确定要删除吗?", "操作提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning); if (result == System.Windows.Forms.DialogResult.OK)
{
string errorinfo = "";
if (ws.delete(txtUserID.Text, ref errorinfo))
{
MessageBox.Show("删除成功" + errorinfo);
}
else
{
MessageBox.Show("删除失败" + errorinfo);
}
} } private void button4_Click(object sender, EventArgs e)
{
DataSet ds = new DataSet();
if (comboBox1.SelectedIndex >= )
{
if (comboBox1.SelectedIndex == )
{
ds = ws.select(Convert.ToInt32(textBox1.Text), "");
}
else if (comboBox1.SelectedIndex == )
{
ds = ws.select(, textBox1.Text);
}
dgv.DataSource = ds.Tables[];
} //this.showResult();
} } }
这里需要注意一点:
就是当我们在WebServices里面更新语句的时候,我们一定要回到我们的WinForm项目中,更新服务引用。

5-->至此我们调用WebServices就告一段落。
第一次写博客,加上做出来严格意义上人生第一个项目,导致现在兴奋不减,思路混乱,文章写的一团乱麻,请大家见谅,给我提出宝贵意见。
加上一点闲扯淡:
感觉人有时候真的很贱,以前大学的时候,天天躺在宿舍,一副无所事事的样子,很想找一些事情做,让自己进步。现在,一要真的开始成长了,莫名其妙开始怀念以前躺在宿舍那段无聊的时光。我想,这应该是畏惧,因为实习所接触的东西都是以前没有接触过的,畏惧失败,害怕自己做的不好。像拿到这个项目的时候,我的第一个想法,不是如何去设计,如何自己想着怎么去写代码。而想的是,去找视频教程,去找源代码,一步到位。后来发现这是不可能的,就算找到源代码,下一次还是不会。所以,我现在应该应该转变一个思路,做中学,先做,遇到不会的,自己想办法解决,如果无法解决,向老师,百度请教。这样做出来一个项目,自己也很享受解决问题的过程,也会很有成就感。
C#利用WinForm调用WebServices实现增删改查的更多相关文章
- Android(java)学习笔记193:利用谷歌API对数据库增删改查(推荐使用)
接下来我们通过项目案例来介绍:这个利用谷歌API对数据库增删改查 1.首先项目图: 2.这里的布局文件activity_main.xml: <LinearLayout xmlns:android ...
- Android(java)学习笔记136:利用谷歌API对数据库增删改查(推荐使用)
接下来我们通过项目案例来介绍:这个利用谷歌API对数据库增删改查 1. 首先项目图: 2. 这里的布局文件activity_main.xml: <LinearLayout xmlns:andro ...
- jQuery调用WebService实现增删改查的实现
第一篇博客,发下我自己写的jQuery调用WebService实现增删改查的实现. 1 <!DOCTYPE html> 2 3 <html xmlns="http://ww ...
- vue实战(一):利用vue与ajax实现增删改查
vue实战(一):利用vue与ajax实现增删改查: <%@ page pageEncoding="UTF-8" language="java" %> ...
- JDBC 1 利用Statement对数据库进行增删改查
准备工作 1新建po类:User private int id; private String name; private String pwd; set,get方法省略 2 新建UserDao类, ...
- 利用Servlet做一套增删改查
真的,稳住,考上研,利用两年逆袭.一步一步来,实在不行,最后最差也不过就是就回家种地,想想也不错. 前期准备配置 建一个动态web项目 新建Dynamic Web ProjectFile->Ne ...
- JavaWeb程序利用Servlet的对SQLserver增删改查操作
声明:学了几天终于将增删改查的操作掌握了,也发现了一些问题,所以总结一下. 重点:操作数据库主要用的是SQL语句跟其他无关. 一:前提知识:PreparedStatement PreperedStat ...
- 一个在ASP.NET中利用服务器控件GridView实现数据增删改查的例子
备注:这是我辅导的一个项目开发组的一个例子,用文章的方式分享出来,给更多的朋友参考.其实我们这几年的项目中,都不怎么使用服务器控件的形式了,而是更多的采用MVC这种开发模式.但是,如果项目的历史背景是 ...
- Android下利用SQLite数据库实现增删改查
1: 首先介绍如何利用adb查看数据库 1: adb shell 2: cd /data/data/包名/databases 3: sqlite3 数据库 4 接下来就可以进行数据库的sql语法 ...
随机推荐
- 「HNOI 2013」数列
题目链接 戳我 \(Solution\) 这道题貌似并不难的样子\(QAQ\) 我们发现这个因为有首项的关系所以有点不太好弄.所以我们要将这个首项对答案的影响给去掉. 我们可以构建一个差分数组,我们令 ...
- HDU - 6215 2017 ACM/ICPC Asia Regional Qingdao Online J - Brute Force Sorting
Brute Force Sorting Time Limit: 1 Sec Memory Limit: 128 MB 题目连接 http://acm.hdu.edu.cn/showproblem.p ...
- Hibernate Update方法提交错误
最近用通用Dao更新对象,报了以下错误 Row was updated or deleted by another transaction (or unsaved-value mapping was ...
- Spring整合JPA时,为实体类添加@Entity注解时提示The type MultipartEntity is deprecated
这个情况是由于导入错了Entity包所导致的. 按住Alt+T时,会有两个关于@Entity的提示 org.hibernate.annotations.Entity 和 javax.persisten ...
- 【maven】---初识
前言 最近在研究自动化测试,其中的一个研究点儿就是maven,去download了一本书,看了看.下面是自己的从书中摘录的一些关于maven的概念性的东西. 内容 maven是什么? Maven是一个 ...
- 洛谷P3588 [POI2015]PUS(线段树优化建图)
题面 传送门 题解 先考虑暴力怎么做,我们把所有\(r-l+1-k\)中的点向\(x\)连有向边,表示\(x\)必须比它们大,那么如果这张图有环显然就无解了,否则的话我们跑一个多源最短路,每个点的\( ...
- php 中将完整的年月日时分秒的时间转换成 年月日的形式
strtotime() 函数将任何英文文本的日期或时间描述解析为 Unix 时间戳(自 January 1 1970 00:00:00 GMT 起的秒数), 将完整的时间格式转换成时间撮的形式,再去进 ...
- [ActionScript 3.0] 如何获得实例对象的类名及类
package { import flash.display.DisplayObject; import flash.display.MovieClip; import flash.display.S ...
- 2016级算法第二次上机-C.AlvinZH的儿时梦想——坦克篇
872 AlvinZH的儿时梦想----坦克篇 思路 简单题.仔细看题,题目意在找到直线穿过的矩形数最小,不能从两边穿过.那么我们只要知道每一行矩形之间的空隙位置就可以了. 如果这里用二维数组记住每一 ...
- 对路径访问拒绝,要加上具体filename/c.png
string strPath = Path.Combine(FilePath, DateTime.Now.ToString("yyyy-MM-dd")); if (!Directo ...