天天看點

C# webservice調用資料庫

1、首先建立一個WinCE項目和一個ASP.Net WebService應用程式。

1、建立一個WebService應用程式。

建立WebService後,會出現一個HolloWorld函數。如下所示:

        [WebMethod]

        public string HelloWorld()

        {

            return "Hello World";

        }

我沒做過Asp.Net的東西,對Asp.net不熟悉。于是就試着在它的下邊添加我自己的函數即可。結構如下:

        [WebMethod]

        public string fun1()

        {

            return "Hello World";

        }

按F5即可看到程式中的兩個函數HelloWorld和fun1。在浏覽器中點選這兩個函數就可以看到調用它們的結果了。

2、在WebService中添加資料庫通路函數

确定這麼寫WebService函數後開始添加資料庫通路函數。

要通路資料庫,必須添加對System.Data.SqlClient的引用是以,首先在文檔頭添加了如下引用:

using System.Data.SqlClient;

下邊是一個測試能不能連接配接到資料庫的函數:

        [WebMethod]

        public bool test()

        {

            string connStr = "server = 10.0.0.172;database=mydb;uid=sa;pwd=123456";

            try

            {

                SqlConnection conn = new SqlConnection(connStr);

                conn.Open();

                bool b = true;

                conn.Close();

                return b;

            }

            catch

            {

                return false;

            }

        }

按F5在在浏覽器中看見兩個函數。點選test函數調用他後可以看到如下結果:

  <?xml version="1.0" encoding="utf-8" ?>

    <boolean xmlns="http://tempuri.org/">true</boolean>

這是個XML檔案。WebService傳遞資料是用過XML的形式傳輸的!

說明傳回結果為true。通路資料庫成功。

3、讀取資料庫中的内容

需要使用Dataset作為載體傳回資料庫中的資料。是以,添加了對System.data的引用:

using System.Data;

下邊是我寫的一個試驗用的函數:

        [WebMethod]

        public DataSet reader()

        {

            string connStr = "server = 10.0.0.172;database=mydb;uid=sa;pwd=123456"; //database=資料庫名,這裡不能用database,要用Initial Catalog=資料庫名,不然連不上。

            try

            {

                string sqlStr = "select * from admin";

                DataSet ds = new DataSet();

                SqlDataAdapter da = new SqlDataAdapter(sqlStr, new SqlConnection(connStr));

                da.Fill(ds);

                return ds;

            }

            catch (Exception exp)

            {

                return null;

            }

        }結果資料顯示的很亂,就不貼了。看到的結果都是XML格式的。

4、建立WinCE項目,并添加Web引用

在解決方案中添加WinCE項目。命名為SDP。

此處需要注意的是:在點選添加Web引用後的視窗中有三個選項:

§  此解決方案中的 Web 服務

§  本地計算機上的 Web 服務

§  浏覽本地網絡上的 UDDI 伺服器

這三個選項都不能直接使用!

點選此解決方案中的 Web 服務後,在視窗上邊的位址欄出現如下位址:

http://localhost:49350/Service1.asmx

将localhost替換成泥計算機的IP,然後才能在PDA中引用,否則WinCE對http://localhost:49350/Service1.asmx的解析将出現問題,很簡單的問題。這樣添加也會由于配置不正确而出現通路不了的問題!

最好是将WebService釋出到IIS後再添加到WinCE的Web引用。(我是這麼用的)添加的引用名為WebRef

5、在WinCE項目中調用WebService函數

添加引用:

using SDP.WebRef;

6、在程式中調用WebRef中的函數

首先我測試調用HelloWorld函數。響應一個button點選事件:

        private void button1_Click(object sender, EventArgs e)

        {

            Service1 svs = new Service1();

            MessageBox.Show(svs.HelloWorld());

        }

測試結果抓了個圖,如下:

7、調用剛才寫的那個通路資料庫的函數

第一步,確定項目中有對System.Data.的引用

using System.Data;

第二步:定義一個DataSet用于接受函數傳回

第三步:用Datagrid顯示資料

重寫後響應button點選事件的代碼如下:

        private void button1_Click(object sender, EventArgs e)

        {

            Service1 svs = new Service1();

            //MessageBox.Show(svs.HelloWorld());

            DataSet ds = new DataSet();

            ds = svs.reader();

            this.dataGrid1.DataSource = ds.Tables[0];

        }