火车列车时刻表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