zoukankan      html  css  js  c++  java
  • C#WinForm利用Web Service API查询数据库并显示到客户端

    我们知道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的扩展,你可以实现非常复杂的数据库查询。

  • 相关阅读:
    第三发
    第二发
    第一发
    要看的算法
    haxe坑
    TCP/IP协议三次握手与四次握手流程解析(转)
    Android动态类生成预加载-dexmaker使用
    Java中ArrayList 、LinkList区别
    Java解析YAML和Android解析YAML
    Java sax、dom、pull解析xml
  • 原文地址:https://www.cnblogs.com/Linc2010/p/3423248.html
Copyright © 2011-2022 走看看