总体思路如下:先建立数据库,再建立webservice,最后通过winform的按钮来调用服务,达到操作数据库的目的。
1.数据库设计
数据库名称:sa ,表名称:C
在sql sever2008 R2下建立表与字段等。
2.建立webservice
2.1启动vs2013,文件》新建项目》选择asp.net web 服务应用程序。
2.2默认按F5 Debug,浏览器自动生成Hello word的页面,表示ws配置成功。
2.3视图》服务器资源管理器》数据连接》添加连接数据库
2.4添加一个类,命名为DBOperation.cs
DBOperation.cs
using System;
using System.Data;
using System.Configuration;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Data.SqlClient;
using System.Text.RegularExpressions;
using System.Collections;
using System.Collections.Generic;
namespace WebServiceTest
{
public class DBOperation : IDisposable
{
public static SqlConnection sqlCon; //用于连接数据库
//将下面的引号之间的内容换成上面记录下的属性中的连接字符串
private String ConServerStr = @"Data Source=USER-20160715YA;Initial Catalog=sa;Integrated Security=True";
//默认构造函数
public DBOperation()
{
if (sqlCon == null)
{
sqlCon = new SqlConnection();
sqlCon.ConnectionString = ConServerStr;
sqlCon.Open();
}
}
//关闭/销毁函数,相当于Close()
public void Dispose()
{
if (sqlCon != null)
{
sqlCon.Close();
sqlCon = null;
}
}
/// <summary>
/// 获取所有货物的信息
/// </summary>
/// <returns>所有货物信息</returns>
public List<string> selectAllCargoInfor()
{
List<string> list = new List<string>();
try
{
string sql = "select * from C";
SqlCommand cmd = new SqlCommand(sql, sqlCon);
SqlDataReader reader = cmd.ExecuteReader();
while (reader.Read())
{
//将结果集信息添加到返回向量中
list.Add(reader[0].ToString());
list.Add(reader[1].ToString());
list.Add(reader[2].ToString());
}
reader.Close();
cmd.Dispose();
}
catch (Exception)
{
}
return list;
}
/// <summary>
/// 增加一条货物信息
/// </summary>
/// <param name="Cname">货物名称</param>
/// <param name="Cnum">货物数量</param>
public bool insertCargoInfo(string Cname, int Cnum)
{
try
{
string sql = "insert into C (Cname,Cnum) values ('" + Cname + "'," + Cnum + ")";
SqlCommand cmd = new SqlCommand(sql, sqlCon);
cmd.ExecuteNonQuery();
cmd.Dispose();
return true;
}
catch (Exception)
{
return false;
}
}
/// <summary>
/// 删除一条货物信息
/// </summary>
/// <param name="Cno">货物编号</param>
public bool deleteCargoInfo(string Cno)
{
try
{
string sql = "delete from C where Cno=" + Cno;
SqlCommand cmd = new SqlCommand(sql, sqlCon);
cmd.ExecuteNonQuery();
cmd.Dispose();
return true;
}
catch (Exception)
{
return false;
}
}
}
}
Service1.asmx 修改 主要是替换helle world这一部分,增加method
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;
namespace WebServiceTest
{
/// <summary>
/// Service1 的摘要说明
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
// 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释。
// [System.Web.Script.Services.ScriptService]
public class Service1 : System.Web.Services.WebService
{
[WebMethod]
public string HelloWorld()
{
return "Hello World";
}
#if true
DBOperation dbOperation = new DBOperation();
[WebMethod(Description = "获取所有货物的信息")]
public string[] selectAllCargoInfor()
{
return dbOperation.selectAllCargoInfor().ToArray();
}
[WebMethod(Description = "增加一条货物信息")]
public bool insertCargoInfo(string Cname, int Cnum)
{
return dbOperation.insertCargoInfo(Cname, Cnum);
}
[WebMethod(Description = "删除一条货物信息")]
public bool deleteCargoInfo(string Cno)
{
return dbOperation.deleteCargoInfo(Cno);
}
#endif
}
}
以上参考网址:http://blog.csdn.net/zhyl8157121/article/details/8169172
3.建立winform测试界面
3.1启动vs2010,建立winform,拖动button1按钮。
3.2 添加服务引用》高级》添加web引用》选择URL》添加引用。
private void button1_Click(object sender, EventArgs e)
{
localhost.Service1 ws = new localhost.Service1();
string Cname = "monkey";
int Cnum=2222;
ws.insertCargoInfo(Cname,Cnum);
//MessageBox.Show(ws.HelloWorld());
}