设为首页 加入收藏

TOP

excel宏调用webservice使用存储过程同步excel数据的方法(三)
2015-11-21 01:58:21 来源: 作者: 【 】 浏览:3
Tags:excel 调用 webservice 使用 存储 过程 同步 数据 方法
n pars) { if (this.trans != null) { cmd.Transaction = this.trans; } cmd.Connection = conn; cmd.CommandType = cmdType; cmd.CommandText = cmdText; if (pars != null && pars.Count > 0) { string[] keys = pars.AllKeys; for (int i = 0; i < pars.Count; i++) { cmd.Parameters.AddWithValue(keys[i], pars[i]); } } } /// /// 执行sql命令,返回受影响行数 /// ///命令类型 ///命令 ///参数组 /// 受影响行数 public override int ExecuteNonQuery(CommandType cmdType, string cmdText, Nameva lueCollection pars) { using (SqlCommand cmd = new SqlCommand()) { this.PrepareCommand(cmd, cmdType, cmdText, pars); int val = cmd.ExecuteNonQuery(); cmd.Parameters.Clear(); return val; } } /// /// 执行sql命令,返回DbDataReader /// ///命令类型 ///命令 ///参数组 /// DbDataReader public override DbDataReader ExecuteReader(CommandType cmdType, string cmdText, Nameva lueCollection pars) { using (SqlCommand cmd = new SqlCommand()) { this.PrepareCommand(cmd, cmdType, cmdText, pars); DbDataReader dr = cmd.ExecuteReader(); cmd.Parameters.Clear(); return dr; } } /// /// 执行sql语句,返回第一行第一列 /// /// /// /// /// public override object ExecuteScalar(CommandType cmdType, string cmdText, Nameva lueCollection pars) { using (SqlCommand cmd = new SqlCommand()) { this.PrepareCommand(cmd, cmdType, cmdText, pars); object val = cmd.ExecuteScalar(); cmd.Parameters.Clear(); return val; } } /// /// 执行sql语句,返回DataTable /// ///命令类型 ///命令 ///参数组 /// public override DataTable GetDataTable(CommandType cmdType, string cmdText, Nameva lueCollection pars) { using (SqlCommand cmd = new SqlCommand()) { DataTable dt = new DataTable(); this.PrepareCommand(cmd, cmdType, cmdText, pars); using (DbDataAdapter da = new SqlDataAdapter()) { da.SelectCommand = cmd; da.Fill(dt); cmd.Parameters.Clear(); return dt; } } } } }

?

WebService.asmx

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;
using System.Data.Common;
using System.Data;
using System.Collections.Specialized;
using DataHelper;

namespace myWebService
{
///


/// WebService 的摘要说明
///

[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 WebService : System.Web.Services.WebService
{
[WebMethod]
public string HelloWorld()
{
string uid = GetGuid();
string test = "n7,5,20150701,10,20150701|n8,5,20150701,10,20150701|n9,5,20150701,9,20150701";
string[] rows=test.Split('|');
int rowsCount=rows.Length;
int colsCount=rows[0].Length;
string cmd = string.Empty;
string floorno=string.Empty;
Nameva lueCollection nvc=new Nameva lueCollection();
string result = string.Empty;
DataHelper.DbHelper dh = DataHelper.DataFactory.GetHelper();
dh.Open();
dh.BeginTrans();
try
{
List sql = new List();
for (int i = 0; i < rowsCount; i++)
{
sql.Add("insert into TARGETHISTORY(EQNO,FLOORNO,RUNSTART,RUNTIME,UPDATETIME,UID) values(@EQNO,@FLOORNO,@RUNSTART,@RUNTIME,@UPDATETIME,@UID)");
nvc = new Nameva lueCollection();
nvc.Add("@EQNO", rows[i].Split(',')[0]);
nvc.Add("@FLOORNO", rows[i].Split(',')[1]);
nvc.Add("@RUNSTART", rows[i].Split(',')[2]);
nvc.Add("@RUNTIME", rows[i].Split(',')[3]);
nvc.Add("@UPDATETIME", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:fff"));
nvc.Add("@UID", uid);
floorno = rows[i].Split(',')[1];
dh.ExecuteNonQuery(CommandType.Text, sql[i], nvc);
}
nvc = new Nameva lueCollection();
nvc.Add("@UID", uid);
nvc.Add("@FLOORNO", floorno);
dh.ExecuteNonQuery(CommandType.StoredProcedure, "DeviceShareLoad", nvc);
dh.CommitTrans();
result= "数据导入成功!";
}
catch (Exception ex)
{
dh.RollBackTrans();
dh.Close();
result = "数据导入失败!请联系 IT! 错误原因:"+ex.ToString();
}
finally
{
dh.Close();
}
return result;
}
private static string GetGuid()
{
System.Guid guid = new Guid();
guid = Guid.NewGuid();
return guid.ToString();
}
}
}

webconfig

?

存储过程

USE [test]
GO
/****** Object: StoredProcedure [dbo].[DeviceShareLoad] Script Date: 07/10/2015 02:49:27 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[DeviceShareLoad]
@floorno nvarchar(50),
@uid nvarchar(50)
AS
BEGIN
merge into targettable as t
using (select * from TARGETHISTORY where uid=@uid) as s
on t.floorno=@floorno and s.floorno=@floorno and t.eqno=s.eqno
when matched
then update set t.eqno=s.eqno,t.floorno=s.floorno,t.runstart=s.runstart,t.runtime=s.runtime,t.updatetime=getdate()
when not matched and s.floorno=@floorno
then insert (eqno,floorno,runstart,runtime,updatetime) values(s.eqno,s.floorno,s.runstart,s.runtime,getdate())
when not matched by source and t.floorno=@floorno
then delete;
SET NOCOUNT ON;
END

首页 上一页 1 2 3 下一页 尾页 3/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇mysql本地访问linux服务器,出现S.. 下一篇MySQL自带函数整理与使用

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: