利用WebService制作简易的列车时刻表

火车列车时刻表webservice:http://www.webxml.com.cn/WebServices/TrainTimeWebService.asmx

前台代码:

前台代码
 1 <body>
 2     <form id="form1" runat="server">
 3         <div>
 4             始发站:
 5             <asp:TextBox ID="txtStartStation" runat="server"></asp:TextBox>
 6             到达站:<asp:TextBox ID="txtArrivateStation" runat="server"></asp:TextBox><asp:Button
 7                 ID="btnSubmit" runat="server" Text="检索" OnClick="btnSubmit_Click1" />
 8             <asp:GridView ID="gv" runat="server" AutoGenerateColumns="false">
 9                 <Columns>
10                     <asp:BoundField DataField="TrainCode" HeaderText="车次" />
11                     <asp:BoundField DataField="FirstStation" HeaderText="始发站" />
12                     <asp:BoundField DataField="LastStation" HeaderText="终点站" />
13                     <asp:BoundField DataField="StartStation" HeaderText="发车站" />
14                     <asp:BoundField DataField="StartTime" HeaderText="发车时间" />
15                     <asp:BoundField DataField="ArriveStation" HeaderText="到达站" />
16                     <asp:BoundField DataField="ArriveTime" HeaderText="到达时间" />
17                     <asp:BoundField DataField="KM" HeaderText="里程" />
18                     <asp:BoundField DataField="UseDate" HeaderText="历时" />
19                 </Columns>
20             </asp:GridView>
21         </div>
22     </form>
23 </body>

后台代码:

public DataTable CreateDataTableType()
    {
        DataTable dt = new DataTable();
        dt.Columns.Add("TrainCode", typeof(string));
        dt.Columns.Add("FirstStation", typeof(string));
        dt.Columns.Add("LastStation", typeof(string));
        dt.Columns.Add("StartStation", typeof(string));
        dt.Columns.Add("StartTime", typeof(string));
        dt.Columns.Add("ArriveStation", typeof(string));
        dt.Columns.Add("ArriveTime", typeof(string));
        dt.Columns.Add("KM", typeof(string));
        dt.Columns.Add("UseDate", typeof(string));
        return dt;
    }
    protected void btnSubmit_Click(object sender, EventArgs e)
    {
       
    }
    protected void btnSubmit_Click1(object sender, EventArgs e)
    {
        Train.TrainTimeWebService ttws = new Train.TrainTimeWebService();
        DataSet ds = ttws.getStationAndTimeByStationName(this.txtStartStation.Text.Trim(), this.txtArrivateStation.Text.Trim(), "");
        DataTable newdt = CreateDataTableType();
        if (ds == null || ds.Tables.Count <= 0 || ds.Tables[0].Rows.Count <= 0)
            return;
        this.gv.DataSource = ds.Tables[0];
        this.gv.DataBind();
        for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
        {
            DataRow dr = newdt.NewRow();
            dr["TrainCode"] = ds.Tables[0].Rows[i]["TrainCode"].ToString();
            dr["FirstStation"] = ds.Tables[0].Rows[i]["FirstStation"].ToString();
            dr["LastStation"] = ds.Tables[0].Rows[i]["LastStation"].ToString();
            dr["StartStation"] = ds.Tables[0].Rows[i]["StartStation"].ToString();
            dr["StartTime"] = ds.Tables[0].Rows[i]["StartTime"].ToString();
            dr["ArriveStation"] = ds.Tables[0].Rows[i]["ArriveStation"].ToString();
            dr["ArriveTime"] = ds.Tables[0].Rows[i]["ArriveTime"].ToString();
            dr["KM"] = ds.Tables[0].Rows[i]["KM"].ToString();
            dr["UseDate"] = ds.Tables[0].Rows[i]["UseDate"].ToString();
            newdt.Rows.Add(dr);
        }
        using (SqlConnection con = new SqlConnection("Data Source=.;Initial Catalog=DEMO;Integrated Security=True"))
        {
            con.Open();
            using (SqlTransaction tran = con.BeginTransaction())
            {
                try
                {
                    string strDel = "Delete Train where TrainCode in (select TrainCode from @dt)";

                    string strSql = "Insert into Train([TrainCode],[FirstStation],[LastStation],[StartStation],[StartTime],[ArriveStation],[ArriveTime],[KM],[UseDate]) select [TrainCode],[FirstStation],[LastStation] ,[StartStation],[StartTime],[ArriveStation],[ArriveTime],[KM],[UseDate] from @dt";
                    SqlCommand cmd = new SqlCommand(strDel, con);
                    cmd.Transaction = tran;
                    SqlParameter sp = new SqlParameter("@dt", SqlDbType.Structured);
                    sp.TypeName = "typetrain";
                    sp.Value = newdt;
                    cmd.Parameters.Add(sp);
                    cmd.ExecuteNonQuery();
                    cmd.Parameters.Clear();
                    cmd.CommandText = strSql;
                    cmd.Parameters.Add(sp);
                    cmd.ExecuteNonQuery();
                    tran.Commit();
                }
                catch (Exception ex)
                {
                    tran.Rollback();
                }
            }
        }
    }

数据库表值变量类型:

表值变量类型
 1 CREATE TYPE [dbo].[typetrain] AS TABLE(
 2     [TrainCode] [nvarchar](50) NOT NULL,
 3     [FirstStation] [nvarchar](50) NULL,
 4     [LastStation] [nvarchar](50) NULL,
 5     [StartStation] [nvarchar](50) NULL,
 6     [StartTime] [datetime] NULL,
 7     [ArriveStation] [nvarchar](50) NULL,
 8     [ArriveTime] [datetime] NULL,
 9     [KM] [decimal](18, 0) NULL,
10     [UseDate] [time](7) NULL,
11     PRIMARY KEY CLUSTERED 
12 (
13     [TrainCode] ASC
14 )WITH (IGNORE_DUP_KEY = OFF)
15 )
16 GO
原文地址:https://www.cnblogs.com/hfliyi/p/2681732.html