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];
}