C#利用Webservices調用WebServices實現增刪改查

来源:http://www.cnblogs.com/juice-1/archive/2017/07/07/7133327.html
-Advertisement-
Play Games

實習導師要求做一個項目,用Winform調用WebServices實現增刪改查的功能。寫下這篇博客,當做是這個項目的總結。如果您有什麼建議,可以給我留言。歡迎指正。 1、首先,我接到這個項目的時候,根本不清楚什麼是WebServices,所以第一步,我要搞清楚什麼是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

  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就告一段落。

 

第一次寫博客,加上做出來嚴格意義上人生第一個項目,導致現在興奮不減,思路混亂,文章寫的一團亂麻,請大家見諒,給我提出寶貴意見。

 

加上一點閑扯淡:

  感覺人有時候真的很賤,以前大學的時候,天天躺在宿舍,一副無所事事的樣子,很想找一些事情做,讓自己進步。現在,一要真的開始成長了,莫名其妙開始懷念以前躺在宿舍那段無聊的時光。我想,這應該是畏懼,因為實習所接觸的東西都是以前沒有接觸過的,畏懼失敗,害怕自己做的不好。像拿到這個項目的時候,我的第一個想法,不是如何去設計,如何自己想著怎麼去寫代碼。而想的是,去找視頻教程,去找源代碼,一步到位。後來發現這是不可能的,就算找到源代碼,下一次還是不會。所以,我現在應該應該轉變一個思路,做中學,先做,遇到不會的,自己想辦法解決,如果無法解決,向老師,百度請教。這樣做出來一個項目,自己也很享受解決問題的過程,也會很有成就感。

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 巡檢發現一臺Linux伺服器上的作業沒有如期發送郵件,登錄伺服器檢查後發現作業並沒有執行,於是檢查一下crontab的設置。結果發現如下錯誤: [root@mylnx2 ~]# crontab -l Authentication token is no longer valid; new one r ...
  • 網盤視頻:裡面包含了centos,ubuntu,Solaris 三種目前比較主流的操作系統的安裝,以及他們的開發環境的安裝 https://pan.baidu.com/disk/home#list/vmode=list&path=%2FC%2B%2B%2F%E7%AC%AC%E4%B8%80%E9% ...
  • Spring Batch是一個輕量級的,完全面向Spring的批處理框架,可以應用於企業級大量的數據處理系統。Spring Batch以POJO和大家熟知的Spring框架為基礎,使開發者更容易的訪問和利用企業級服務。Spring Batch可以提供大量的,可重覆的數據處理功能,包括日誌記錄/跟蹤, ...
  • 一:共用賬號檢查 二:來賓賬戶檢查 三:口令複雜度策略 四:口令最長生存期策略 五:遠程關機授權 六:系統關閉授權 七:文件許可權指派 八:匿名許可權限制 八:登陸日誌檢查 九:系統日誌完備性檢查 十:日誌大小設置 十一:遠程登錄超時配置 十二:預設共用檢查 十三:共用許可權檢查 十四:防範病毒管理 十五 ...
  • 之前在公司用的服務端是wcf寫的,但是沒有深入研究,最近找工作,面試的時候好多人看到這個總提問,這裡做個複習 就用微軟官方上的例子,搭一個簡單的wcf服務,分6步 1 定義服務協定也就是契約,其實就是定義一個服務介面,這玩意後邊是公開客戶端用的,然後也告訴後邊承載程式應該如何載入服務 主要涉及兩個特 ...
  • 新人菜鳥 在開發一款軟體,用到了 MyS中的 DataView 查詢。查詢後判斷視圖是否有返回值,找了好久,終於找到了他的 DataView XX.Count 參數。 原文網址:http://skybirdzw.blog.163.com/blog/static/7257062620112334552 ...
  • 近期又看了一遍《C#高級編程》這本書,想對書中——任務、線程和同步這一章知識點做一個筆記,讓以後工作中忘記某個知識點能直接拿來用,在此進行一個總結。 Parallel數據和任務並行 一、Parallel.For 1、用Parallel.For並行運行迭代 static void ParallelFo... ...
  • 這裡彙總了.net基礎的相關文章,方便查閱! .net基礎 參考資料 http://www.cnblogs.com/JeffreyZhao/archive/2009/08/05/from-delegate-to-others.html http://www.cnblogs.com/JimmyZhan ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...