C#WinForm利用Web Service API查询数据库并显示到客户端
2007-11-01 20:58
393 查看
我们知道C#的Web Service API的返回值可以是DataSet类型,这就使得我们可以通过Web Service API来查询数据库,这个功能将成为我们许多应用的基础。下面我们用一个简单的Winform调用的例子来说明这个问题。
首先我们有一个SQL Server2000数据库book在服务器webserviceserver上,book库中有张表bookinfo,包含书名、作者、价格等字段,数据库用户sa,密码123456。我们利用VS2005创建一个Web Service项目并发布出去,这里不再详述如何建立和发布,如有不清楚的地方请参阅相关资料。也可以参考我的另两篇文章:
http://blog.csdn.net/cattiger75/archive/2007/10/17/1828896.aspx(如何创建和发布WEB SERVICE)
http://blog.csdn.net/cattiger75/archive/2007/10/19/1832803.aspx(C#WINFORM里如何调用WEB Service API)
我们在项目的Service.cs里编写一个查询数据库的API,为了简化问题,我们编写的这个API只接受一个字符串参数,用来在书名字段做前方匹配的查询,返回一个DataSet,这个DataSet中包含一个名为bookinfo的DataTable,bookinfo中含有书名、作者和价格字段,代码如下:
using System;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.Data;
using System.Data .SqlClient;
[WebService(Namespace = http://www.mywebservice.com/)]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public class Service : System.Web.Services.WebService
{
//定义一个sqlconnection连接成员
SqlConnection sqlconn = new SqlConnection("Server=webserviceserver;Initial Catalog=book;uid=sa;pwd=123456");
public Service () {
//如果使用设计的组件,请取消注释以下行
//InitializeComponent();
}
[WebMethod]
public string HelloWorld() {
return "欢迎使用我的WEB服务!";
}
[WebMethod]
public DataSet searchBook(string bookname)
{
sqlconn.Open();
string sql = "select top 50 书名,作者,价格 from bookinfo where 书名 like '" + bookname + "%' order by id desc";
SqlDataAdapter da = new SqlDataAdapter(sql, sqlconn);
DataSet ds = new DataSet();
da.Fill(ds,"bookinfo");
return ds;
}
}
编写好后将Web Service发布出去。
现在我们来建立一个winform的Windows应用程序项目,并在项目中将我们刚刚发布的WEB Service做为一个WEB引用添加进来。
在项目窗体中创建一个textbox控件用来输入查询内容,一个名为btnBookSearch的查询button,一个DataGridView控件用来绑定获得的dataset。双击查询button编写如下事件处理函数。
private void btnBookSearch_Click(object sender, EventArgs e)
{
//定义一个Web Service对象,WebReference是我们添加WEB引用时取的名称
WebReference.Service ws = new cqust.libmanage.WebReference.Service();
this.dataGridViewBookInfo.AutoGenerateColumns = true;
//将返回的dataset绑定到datagridview上
this.dataGridViewBookInfo .DataSource = ws.searchBook(this.textBoxSearchString.Text);
//指定显示的datatable
this.dataGridViewBookInfo.DataMember = "bookinfo";
}
编译项目并行,你将会在datagridview中看到查询的结果。
我们的例子非常简单,没有考虑诸如异常捕获、异步调用、安全性等问题,但是它说明了利用Web Service API查询数据库是非常简单的,通过对这个简单API的扩展,你可以实现非常复杂的数据库查询。
首先我们有一个SQL Server2000数据库book在服务器webserviceserver上,book库中有张表bookinfo,包含书名、作者、价格等字段,数据库用户sa,密码123456。我们利用VS2005创建一个Web Service项目并发布出去,这里不再详述如何建立和发布,如有不清楚的地方请参阅相关资料。也可以参考我的另两篇文章:
http://blog.csdn.net/cattiger75/archive/2007/10/17/1828896.aspx(如何创建和发布WEB SERVICE)
http://blog.csdn.net/cattiger75/archive/2007/10/19/1832803.aspx(C#WINFORM里如何调用WEB Service API)
我们在项目的Service.cs里编写一个查询数据库的API,为了简化问题,我们编写的这个API只接受一个字符串参数,用来在书名字段做前方匹配的查询,返回一个DataSet,这个DataSet中包含一个名为bookinfo的DataTable,bookinfo中含有书名、作者和价格字段,代码如下:
using System;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.Data;
using System.Data .SqlClient;
[WebService(Namespace = http://www.mywebservice.com/)]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public class Service : System.Web.Services.WebService
{
//定义一个sqlconnection连接成员
SqlConnection sqlconn = new SqlConnection("Server=webserviceserver;Initial Catalog=book;uid=sa;pwd=123456");
public Service () {
//如果使用设计的组件,请取消注释以下行
//InitializeComponent();
}
[WebMethod]
public string HelloWorld() {
return "欢迎使用我的WEB服务!";
}
[WebMethod]
public DataSet searchBook(string bookname)
{
sqlconn.Open();
string sql = "select top 50 书名,作者,价格 from bookinfo where 书名 like '" + bookname + "%' order by id desc";
SqlDataAdapter da = new SqlDataAdapter(sql, sqlconn);
DataSet ds = new DataSet();
da.Fill(ds,"bookinfo");
return ds;
}
}
编写好后将Web Service发布出去。
现在我们来建立一个winform的Windows应用程序项目,并在项目中将我们刚刚发布的WEB Service做为一个WEB引用添加进来。
在项目窗体中创建一个textbox控件用来输入查询内容,一个名为btnBookSearch的查询button,一个DataGridView控件用来绑定获得的dataset。双击查询button编写如下事件处理函数。
private void btnBookSearch_Click(object sender, EventArgs e)
{
//定义一个Web Service对象,WebReference是我们添加WEB引用时取的名称
WebReference.Service ws = new cqust.libmanage.WebReference.Service();
this.dataGridViewBookInfo.AutoGenerateColumns = true;
//将返回的dataset绑定到datagridview上
this.dataGridViewBookInfo .DataSource = ws.searchBook(this.textBoxSearchString.Text);
//指定显示的datatable
this.dataGridViewBookInfo.DataMember = "bookinfo";
}
编译项目并行,你将会在datagridview中看到查询的结果。
我们的例子非常简单,没有考虑诸如异常捕获、异步调用、安全性等问题,但是它说明了利用Web Service API查询数据库是非常简单的,通过对这个简单API的扩展,你可以实现非常复杂的数据库查询。
相关文章推荐
- Android客户端程序通过Web Service实现对服务器端数据库的查询
- 新浪微博PC客户端(DotNet WinForm C# 版,C#调用新浪微博API代码,源码下载)—— 初探 (第二部分内置链接)
- C#winform treeview连接数据库后自动识别主键并显示出来
- [c#]如何使datagridview查询结果显示为别名(非数据库列名)
- 如何创建、发布Web Service和 C#WINFORM里如何调用WEB Service API
- 【C#】如何在查询数据库表并显示到DataGridV中的进度条动态显示?
- 怎么在后台将数据库中数据查询出来并分页显示在客户端?!!!
- 利用GeoIP数据库及API进行地理定位查询
- C# Winform ComboBox 在输入内容时 会在下拉菜单中显示 根据输入内容查询的结果
- c#第四次作业:建立数据库和表,并用cmd显示查询结果
- C# 利用系统API 复制大文件(显示进度条)
- 利用hibernate的session查询数据库,并且在jsp页面显示表内容的方法
- C#WinForm利用DataGridView创作高级查询窗体
- 如何创建、发布Web Service和 C#WINFORM里如何调用WEB Service API
- c#Winform程序调用app.config文件配置数据库连接字符串 SQL Server文章目录 浅谈SQL Server中统计对于查询的影响 有关索引的DMV SQL Server中的执行引擎入门 【译】表变量和临时表的比较 对于表列数据类型选择的一点思考 SQL Server复制入门(一)----复制简介 操作系统中的进程与线程
- 利用GeoIP数据库及API进行地理定位查询
- c# winform richtextbox将图片插入数据库、读取数据库显示图片
- C# 利用系统API 复制大文件(显示进度条)
- 在c#中利用dataGrid实现数据库的多表查询,修改,删除
- VS 2010中WinForm开发(C#)—图片上传到数据库与显示(sql server 2008)