C#利用WinForm调用WebServices实现增删改查
2018-06-23 23:57:14来源:未知 阅读 ()
实习导师要求做一个项目,用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
2 { 3 4 [WebMethod] 5 public string HelloWorld() 6 { 7 return "Hello World"; 8 } 9 10 [WebMethod] 11 public DataSet select(int userid,string username) 12 { 13 try 14 { 15 DataSet ds = new DataSet(); 16 string constr = "Data source=.;Initial Catalog=DB_UserSystem;User ID=sa;Password=123456"; 17 using (SqlConnection con = new SqlConnection(constr)) 18 { 19 if (con.State == ConnectionState.Closed) 20 { 21 con.Open(); 22 } 23 string sql = "select * from TB_UserInfo where userid='" + userid + "' or username='" + username + "'"; 24 SqlDataAdapter da = new SqlDataAdapter(sql, con); 25 da.Fill(ds); 26 con.Close(); 27 } 28 return ds; 29 } 30 catch (Exception ex) 31 { 32 return new DataSet(); 33 } 34 35 } 36 47 [WebMethod] 48 49 public bool add(string UserID, string UserName, string UserSex, string UserAge, string UserPassword, string UserType) 50 { 51 string constr = "Data source=.;Initial Catalog=DB_UserSystem;User ID=sa;Password=123456"; 52 using (SqlConnection con = new SqlConnection(constr)) 53 { 54 string sql = "insert into TB_UserInfo values ('"+UserID+"','"+UserName+"','"+UserSex+"','"+UserAge+"','"+UserPassword+"','"+UserType+"')"; 55 using (SqlCommand cmd = new SqlCommand(sql, con)) 56 { 57 try 58 { 59 con.Open(); 60 cmd.ExecuteNonQuery(); 61 con.Close(); 62 return true; 63 } 64 catch (Exception ex) 65 { 66 return false; 67 } 68 } 69 } 70 } 71 72 [WebMethod] 73 74 public bool delete(string UserID,ref string errormessage) 75 { 76 string constr = "Data Source=.;Initial Catalog=DB_UserSystem;User ID=sa;Password=123456"; 77 using (SqlConnection con = new SqlConnection(constr)) 78 { 79 string sql ="delete from TB_UserInfos where UserID='"+UserID+"'"; 80 using (SqlCommand cmd = new SqlCommand(sql, con)) 81 { 82 try 83 { 84 con.Open(); 85 cmd.ExecuteNonQuery(); 86 con.Close(); 87 return true; 88 } 89 catch (Exception ex) 90 { 91 errormessage=ex.Message.ToString(); 92 return false; 93 } 94 95 } 96 } 97 } 98 99 [WebMethod] 100 public bool update(string UserID, string UserName, string UserSex, string UserAge, string UserPassword, string UserType, ref string errormessage) 101 { 102 string constr = "Data Source=.;Initial Catalog=DB_UserSystem;User ID=sa;Password=123456"; 103 using (SqlConnection con = new SqlConnection(constr)) 104 { 105 string sql = "update TB_UserInfo set UserName='"+UserName+"',UserSex='"+UserSex+"',UserAge='"+UserAge+"',UserPassword='"+UserPassword+"',UserType='"+UserType+"' where UserID='"+UserID+"'"; 106 using (SqlCommand cmd = new SqlCommand(sql, con)) 107 { 108 try 109 { 110 con.Open(); 111 cmd.ExecuteNonQuery(); 112 con.Close(); 113 return true; 114 } 115 catch (Exception ex) 116 { 117 errormessage = ex.Message.ToString(); 118 return false; 119 } 120 } 121 122 } 123 } 124 } 125
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=0; 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 >= 0) { if (comboBox1.SelectedIndex == 0) { ds = ws.select(Convert.ToInt32(textBox1.Text), ""); } else if (comboBox1.SelectedIndex == 1) { ds = ws.select(0, textBox1.Text); } dgv.DataSource = ds.Tables[0]; } //this.showResult(); } } }
这里需要注意一点:
就是当我们在WebServices里面更新语句的时候,我们一定要回到我们的WinForm项目中,更新服务引用。
5-->至此我们调用WebServices就告一段落。
第一次写博客,加上做出来严格意义上人生第一个项目,导致现在兴奋不减,思路混乱,文章写的一团乱麻,请大家见谅,给我提出宝贵意见。
加上一点闲扯淡:
感觉人有时候真的很贱,以前大学的时候,天天躺在宿舍,一副无所事事的样子,很想找一些事情做,让自己进步。现在,一要真的开始成长了,莫名其妙开始怀念以前躺在宿舍那段无聊的时光。我想,这应该是畏惧,因为实习所接触的东西都是以前没有接触过的,畏惧失败,害怕自己做的不好。像拿到这个项目的时候,我的第一个想法,不是如何去设计,如何自己想着怎么去写代码。而想的是,去找视频教程,去找源代码,一步到位。后来发现这是不可能的,就算找到源代码,下一次还是不会。所以,我现在应该应该转变一个思路,做中学,先做,遇到不会的,自己想办法解决,如果无法解决,向老师,百度请教。这样做出来一个项目,自己也很享受解决问题的过程,也会很有成就感。
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 利用css 实现 视觉差效果 2020-04-09
- 利用vertical-align属性实现分隔符 2020-04-03
- CSS3如何利用粒子旋转伸缩加载动画 2020-03-13
- 如何利用 githob 上传自己的网站 2020-03-01
- 如何利用border书写三角形,建议考虑正方形 2020-02-21
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash