SqlParameter[] paras = BuildParas(id, time, name);

bool bRet = ExcuteProcedure(“数据库连接字符串”, "存储过程名", paras, "表名");

public static SqlParameter[] BuildParas(string Id, DateTime Time, string Name)
      {
          SqlParameter[] paras = new SqlParameter[3];
          SqlParameter para1 = new SqlParameter();
          para1.Direction = ParameterDirection.Input;
          para1.ParameterName = "@pid";
          para1.SqlDbType = SqlDbType.VarChar;
          para1.Size = 32;
          para1.Value = Id;
          paras[0] = para1;

SqlParameter para2 = new SqlParameter();
          para2.Direction = ParameterDirection.Input;
          para2.ParameterName = "@ptime";
          para2.SqlDbType = SqlDbType.DateTime;
          para2.Value = DateTime.Parse(Time);
          paras[1] = para2;

SqlParameter para3 = new SqlParameter();
          para3.Direction = ParameterDirection.Input;
          para3.ParameterName = "@pname";
          para3.SqlDbType = SqlDbType.VarChar;
          para3.Size = 20;
          para3.Value = Name;
          paras[2] = para3;

return paras;

}

public static bool ExcuteProcedure(string strDataBaseInfo, string procedureName, SqlParameter[] paras, string strTableName)
      {
          bool bRet = false;
          SqlCommand cmd = null;
          SqlConnection con = new SqlConnection(strDataBaseInfo);
          try
          {
              con.Open();
              cmd = new SqlCommand("select count(*) from " + strTableName + " where id='" + paras[0].Value.ToString() + "'", con);//目的是保证id唯一
              int nExistCount = int.Parse(cmd.ExecuteScalar().ToString());//查询结果的第一行的第一列
              if (nExistCount > 0)
              {
                  return true;
              }
              cmd = null;
              cmd = new SqlCommand(procedureName, con);
              cmd.CommandType = CommandType.StoredProcedure;
              cmd.Parameters.Clear();
              if (paras != null && paras.Length > 0)
              {
                  for (int i = 0; i < paras.Length; i++)
                  {
                      cmd.Parameters.Add(paras[i]);
                  }
              }
              int nCount = cmd.ExecuteNonQuery();
              if (nCount != -1)
              {
                  bRet = true;
              }
          }
          catch (Exception ex)
          {

}
          finally
          {
              if (cmd != null)
                  cmd.Parameters.Clear();
              if (con.State == ConnectionState.Open)
                  con.Close();
          }
          return bRet;

}

C# 执行存储过程的更多相关文章

  1. Dapper完美兼容Oracle,执行存储过程,并返回结果集。

    Dapper完美兼容Oracle,执行存储过程,并返回结果集. 这个问题,困扰了我整整两天. 刚刚用到Dapper的时候,感觉非常牛掰.特别是配合.net 4.0新特性dynamic,让我生成泛型集合 ...

  2. JAVA使用JDBC技术操作SqlServer数据库执行存储过程

    Java使用JDBC技术操作SqlServer数据库执行存储过程: 1.新建SQLSERVER数据库:java_conn_test 2.新建表:tb_User 3.分别新建三个存储过程: 1>带 ...

  3. Oracle中执行存储过程call和exec区别

    Oracle中执行存储过程call和exec区别 在sqlplus中这两种方法都可以使用: exec pro_name(参数1..); call pro_name(参数1..); 区别: 1. 但是e ...

  4. C#获取执行存储过程的" 返回值"代码

    以下是C#代码: /// <summary> /// 执行存储过程,返回" 返回值" /// </summary> /// <param name=& ...

  5. C#执行存储过程的简化

    下面的方法是我在实际开发中摸索出来的,可以在很大程度上简化调用存储过程的代码. 首先来看一下C#调用存储过程的一般过程:1.打开数据库连接SqlConnection:2.生成一个SqlCommand: ...

  6. MyCat 学习笔记 第十三篇.数据分片 之 通过HINT执行存储过程

    1 环境说明 VM 模拟3台MYSQL 5.6 服务器 VM1 192.168.31.187:3307 VM2 192.168.31.212:3307 VM3 192.168.31.150:  330 ...

  7. 原生jdbc执行存储过程

    //定时任务,结转 . //表名 fys_sch_lvyou2 ,存储过程名:fys_sch_lvyou2_carrayover //无参调用:{call insertLine} //有参调用:{ca ...

  8. 0327定时执行--存储过程--dbms_job--dbms_scheduler.create_job

    --oracle job 定时执行 存储过程 --建一张测试表 create table Person( name ), sex ) ); / --创建测试的存储过程 create or replac ...

  9. EF中执行存储过程,获取output返回值

    EF不能直接支持执行存储过程,于是使用转化成执行SQL语句的形式,却怎么也获取不到output的值,折腾的好久,终于解决了,分享下曲折的经历: public int AddVote(int title ...

  10. Oracle创建存储过程、执行存储过程基本语法

    >>>>>>>>>>>>>>>>>>>>>>>>> ...

随机推荐

  1. 客户Oracle数据库在插入数据的时候报超出最大长度的错误(规避风险)

    背景: 项目使用oracle数据,在开发环境测试一些正常.项目部署到客户的服务器上后,系统在添加数据的时候报错.输出错误信息,发现是“超出最大长度”的异常. 但是按照数据库的设计,添加的数据应该在允许 ...

  2. iOS的属性声明:retain和strong的区别

    声明属性时用strong或者retain效果是一样的(貌似更多开发者更倾向于用strong).不过在声明Block时,使用strong和retain会有截然不同的效果.strong会等于copy,而r ...

  3. PDO LIMIT bug

    PDO存在一个LIMIT BUG(mysql) 需要指定数据类型,而且limit后面跟的2个参数必须是数值类型,不然的话获取不到数据 例1: $dsn = "mysql:host=127.0 ...

  4. CM3存储器系统

    1.位带(Bit-Band):如1M的地址都可以用bit访问,然后用32M的地址对应这1M的地址.其中这32M地址的每个字的最低位对应那1M可bit寻址的每个位.

  5. c++模板编程-typename与class关键字的区别

    最近一直在研究c++模板编程,虽然有些困难,但希望能够坚持下去.今天,在书上看见一个讨论模板编程typename与class两个关键字的区别,觉得挺有意义的,就把它们给总结一下. 先看一个例子: te ...

  6. python 杂记

    class TestA(object): def __init__(self): print("A is initing"); def foo(self): print(" ...

  7. WDCP LNMPA和LNMP 504 Gateway time-out错误的解决方法

    Nginx的特点是处理静态很给力,Apache的特点是处理动态很稳定,两者结合起来便是LNMPA,nginx处理前端,apache处理后端,这样处理静态会很快,处理动态会很稳定.当我以为安装完成以后便 ...

  8. 列表:一个打了激素的数组 - 零基础入门学习Python010

    列表:一个打了激素的数组 让编程改变世界 Change the world by program 列表:一个打了激素的数组 有时候我们需要把一堆东西暂时存储起来,因为他们有某种直接或者间接的联系,我们 ...

  9. iOS开发之MD5封装及应用

    一.MD5的封装 #define CC_MD5_DIGEST_LENGTH 16 - (NSString *)toMD5 { const char* input = [self UTF8String] ...

  10. pcduino通过USB方式刷机

    最近买了块pcduino来玩,一开始也不知道怎么入手使用,就想先学着网上来刷机,可以用TF卡来刷机,也可以用U盘来刷机.由于手上只有优盘,所以采用了第二种方式.具体方法参考了网上. 本文非原创,原文来 ...