C# WinForm 调用WebService
在Winform中对数据库进行操作缺乏安全性,因而可以使用Winform调用WebService来实现对数据库的各种操作。
在VS2010中,创建一个Web服务程序,第一:创建一个空的Web应用程序,名字自己起。第二:鼠标右击刚刚创建的工程,选择添加,在弹出的框中选择Web服务,自己起好名字,确定即可,这样就创建好一个Web服务程序了。
经过上上面的步骤,我们就可以添加方法来实现数据库的操作。
代码如下:
using System;
using System.Collections.Generic;
using System.Linq; using System.Web;
using System.Web.Services;
using System.Data.SqlClient;
using System.Data;
namespace WebServerSQL {
/// <summary>
/// WebServerGetSqlData 的摘要说明
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] [System.ComponentModel.ToolboxItem(false)]
// 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释。
// [System.Web.Script.Services.ScriptService]
public class WebServerGetSqlData : System.Web.Services.WebService {
//定义数据库连接对象
private SqlConnection con;
[WebMethod]
public DataSet GetInfo(string strSql){
string sqlConnect = "initial catalog=数据库名称;server=服务器名称;uid=sa;pwd=密码";
con = new SqlConnection(sqlConnect);
con.Open();
SqlDataAdapter da = new SqlDataAdapter(strSql, con);
DataSet ds = new DataSet();
da.Fill(ds);
return ds;
}
[WebMethod]
public bool testConnect(){
try{
//数据库连接,定义连接对象和连接字符串并打开
string sqlConnect = "initial catalog=数据库名称;server=服务器名称;uid=sa;pwd=密码";
con = new SqlConnection(sqlConnect);
con.Open();
return true;
}
catch
{
return false;
}
}
}
}
下面看看Winfrom下怎么调用WebService:
首先要添加Web服务引用,在VS2010中,直接右击工程,在弹出的菜单中看不到添加Web引用,难道Winform中不能添加Web引用吗?通过验证,是可以添加的。我们只需要选择选择Web服务引用,然后在弹出的对话框中点击高级,然后你就会看到新弹出一个对话框里面就有添加Web引用,然后输入WebService服务的URL地址按照步骤完成即可。如下图:
然后在Winfrom中我们可以调用WebService提供的方法了,代码如下:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms; namespace WinformGetWebServerSQL {
public partial class FrmWebserver : Form{
public FrmWebserver(){
InitializeComponent();
} //定义web服务对象
localhost.WebServerGetSqlData webData = new localhost.WebServerGetSqlData();
//测试数据库是否连接成功
private void btnTest_Click(object sender, EventArgs e){
if (webData.testConnect()){
label2.Text = "成功";
}else{
label2.Text = "失败";
}
} //显示数据库中表的数据
private void btnShow_Click(object sender, EventArgs e){
string strsql = "select * from item";
DataSet ds=webData.GetInfo(strsql);
DVShowInfo.DataSource = ds.Tables[];
}
}
}
至此一个简单的调用webservice的程序就完成了,感兴趣的朋友可以在WebService中添加更多的方法,比如对数据库的增,删,改,查等供winform调用。
希望朋友们多多给点意见,大家共同学习进步!
C# WinForm 调用WebService的更多相关文章
- C#winForm调用WebService的远程接口
Web Service 的创建简单编码.发布和部署 上一篇详细概述了WebService的创建,编码,发布和部署,那么作为客户端的程序如何访问远程端的WebService 接下来看一下具体步骤: ...
- C# winForm调用WebService
C#winForm调用WebService的远程接口 创建一个WebService工程用例 添加服务引用 添加webService服务地址 输入命名空间名称 主要代码 测试成功截图 工程代码下载 新建 ...
- winform调用webservice假死怎么解决
主线程调用外部web service,没有返回时,主线程阻塞了,界面肯定假死耗时操作都是要在工作线程里面执行的.一般情况下winform调用webservice时步骤1添加服务引用---高级----添 ...
- c#调用WebService实例
在Winform中对数据库进行操作缺乏安全性,因而可以使用Winform调用WebService来实现对数据库的各种操作.在VS2010中,创建一个Web服务程序,第一:创建一个空的Web应用程序,名 ...
- 一个简单的webservice的demo(下)winform异步调用webservice
绕了一大圈,又开始接触winform的项目来了,虽然很小吧.写一个winform的异步调用webservice的demo,还是简单的. 一个简单的Webservice的demo,简单模拟服务 一个简单 ...
- winform客户端程序第一次调用webservice方法很慢的解决方法
.net2.0的winform客户端最常用的与服务端通信方式是通过webservice,最近在用dottrace对客户端做性能测试的时候发现,客户端程序启动以后,第一次调用某一个webservice的 ...
- winform下调用webservice,传参List<string>
用c#做了一个webservice,其中一个接口是public bool AddReturns(List<string> SQLStringList). 然后在另一个c#做的winform ...
- WinForm客户端调用 WebService时 如何启用Session
WinForm客户端调用 WebService时 如何启用Session 摘自: http://www.cnblogs.com/swtseaman/archive/2011/04/18/2020176 ...
- C# 调用WebService的3种方式 :直接调用、根据wsdl生成webservice的.cs文件及生成dll调用、动态调用
1.直接调用 已知webservice路径,则可以直接 添加服务引用--高级--添加web引用 直接输入webservice URL.这个比较常见也很简单 即有完整的webservice文件目录如下图 ...
随机推荐
- 【M9】利用destructors避免泄漏资源
1.在堆上获取的动态资源,用户忘记delete,或者由于异常导致没有没执行到delete,都会造成资源泄漏. 2.我们知道,栈上的对象,离开作用域,必定要执行析构方法.即使抛出异常,会堆栈回滚,保证已 ...
- BZOJ 3930: [CQOI2015]选数 递推
3930: [CQOI2015]选数 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnline/pro ...
- C#操作Word (2)-- 打开&关闭Word文档
本文正式开始在VS2010中使用C#语言操作Word2007. 不是十分了解Word对象模型的朋友,请参考上一篇文章,或者下载:C#操作Word2007.pdf. ------------------ ...
- TP复习9
配置文件 'TMPL_TEMPLATE_SUFFIX'=>'.html',//更改模板文件后缀名'TMPL_FILE_DEPR'=>'_',//修改模板文件目录层次'TMPL_DETECT ...
- [Node.js] CommonJS Modules
CoomonJS modules provide a clean syntax for importing dependencies. This lesson will take a look at ...
- C 语言指针怎么理解?
对于程序员来说内存可以简化成这样一种东西:<img src="https://pic1.zhimg.com/4d060c3f67c22cd4b07273db00f64708_b ...
- LINUX 逻辑地址、线性地址、物理地址和虚拟地址 转
一.概念物理地址(physical address)用于内存芯片级的单元寻址,与处理器和CPU连接的地址总线相对应.——这个概念应该是这几个概念中最好理解的一个,但是值得一提的是,虽然可以直接把物理地 ...
- IPC——共享内存
Linux进程间通信——使用共享内存 下面将讲解进程间通信的另一种方式,使用共享内存. 一.什么是共享内存 顾名思义,共享内存就是允许两个不相关的进程访问同一个逻辑内存.共享内存是在两个正在运行的 ...
- 进程控制之wait和waitpid函数
当一个进程正常或异常终止时,内核就向其父进程发送SIGCHLD信号.因为子进程终止是个异步事件(这可以在父进程运行的任何时候发生),所以这种信号也是内核向父进程发的异步通知.父进程可以选择忽略该信号, ...
- jq实现地址级联效果
(function ($) { $.fn.Address = function (options) { var defaults = { divid: "Address", cal ...