存储过程的调用和Parameters数组的调用
记录一些杂记吧
declare @d datetime
set @d=GETDATE() select * from [ACC_B2B].[dbo].ORDER_Head --where 1=1 select datediff(ms,@d,getdate()) --2453 --2406 给查询条件加上where 1=1 速度会快一点;
where 1=1
引用地址:http://www.398588.com/Article/T5/46.aspx
返回一个存储过程的返回值。
方法代码:
public int SqlParm(string cmdText,SqlParameter[] Prams)
{
SqlConnection Conn = new SqlConnection(ConfigurationManager.ConnectionStrings[].ConnectionString);
Conn.Open();
SqlCommand Cmd = new SqlCommand(cmdText, Conn);
Cmd.CommandType = CommandType.StoredProcedure;
foreach (SqlParameter P in Prams)
{
Cmd.Parameters.Add(P);
}
Cmd.Parameters.Add(new SqlParameter("Return", SqlDbType.Int, 4, ParameterDirection.ReturnValue, false, 0, 0, string.Empty, DataRowVersion.Default, null));
Cmd.ExecuteNonQuery();
int RowNum = int.Parse(Cmd.Parameters["Return"].Value.ToString());
return RowNum;
}
调用方法代码:
SqlParameter[] Paramrs={new SqlParameter("@Q",SqlDbType.VarChar,50)};
Paramrs[].Value = "abc"; //给@Q值。
Response.Write(SqlParm("过程名称",Paramrs);
以上仅供参考,本站原创文章,如有转载请带链接注明出自 网络自由人 1 SqlParameter[] paras=
2 {
3 new SqlParameter("@name","这里应该放@name的类型")
4 };
5 SqlParameter parm = new SqlParameter("select_Con", "73468969715");
6 DataTable myset = ExecuteStoredProcedure("select_Con", parm);
SqlParameter
现在,我们要改写这样的语句,使用SqlParameter来做 SqlCommand SqlCmd = new SqlCommand(sql, SqlConn); SqlParameter _userid = new SqlParameter("uid", SqlDbType.Int); _userid.Value = Request.QueryString["u_id"]; SqlCmd.Parameters.Add(_userid);
public static DataTable ExecuteStoredProcedure(string ProcNme, params SqlParameter[] paramemters)
{
SqlDataReader reader = null;
DataTable dt = new DataTable();
using (SqlConnection conn=new SqlConnection(ConfigurationManager.ConnectionStrings["Connection B2B"].ToString()))
{
conn.Open();
using (SqlCommand cmd=conn.CreateCommand())
{
SqlTransaction st = conn.BeginTransaction();
cmd.Transaction = st;
try
{
cmd.CommandText = ProcNme;// 存储过程与Command牵连在一起了
cmd.CommandType = CommandType.StoredProcedure;//command执行的类型是存储过程,不再是sql语句 cmd.Parameters.AddRange(paramemters);
reader = cmd.ExecuteReader();//返回发的是DataReader 下面的方法将reader转成datatable
dt= ConvertDataReaderToDataTable(reader);
return dt; //cmd.Parameters.AddRange(paras);
//SqlDataAdapter da = new SqlDataAdapter();
//da.SelectCommand = cmd;
//DataSet ds = new DataSet();
//da.Fill(ds, "StuInfo");
//dataGridView1.DataSource = ds.Tables["StuInfo"];
}
catch (Exception)
{ throw;
}
}
}
} public static DataTable ConvertDataReaderToDataTable(SqlDataReader reader)
{
try
{
DataTable objDataTable = new DataTable();
int intFieldCount = reader.FieldCount;
for (int intCounter = 0; intCounter < intFieldCount; ++intCounter)
{
objDataTable.Columns.Add(reader.GetName(intCounter), reader.GetFieldType(intCounter));
} objDataTable.BeginLoadData(); object[] objValues = new object[intFieldCount];
while (reader.Read())
{
reader.GetValues(objValues);
objDataTable.LoadDataRow(objValues, true);
}
reader.Close();
objDataTable.EndLoadData(); return objDataTable; }
catch (Exception ex)
{
throw new Exception("转换出错!", ex);
} }
public override bool ValidateUser(string username, string password)
{
SqlConnection sqlconn = new SqlConnection("Data Source=12345;Initial Catalog=TestDB01;Integrated Security=True");
SqlCommand sqlcmd = new SqlCommand("select UserID, UserName from [UserInfo] where UserName = @userName and UserAge = @userAge", sqlconn);
try
{
sqlconn.Open();
sqlcmd.Parameters.Add(new SqlParameter("@userName", SqlDbType.NVarChar, 50));
11 sqlcmd.Parameters["@userName"].Value = username.Trim();
12 sqlcmd.Parameters.Add(new SqlParameter("@userAge", SqlDbType.SmallInt, 2));
13 sqlcmd.Parameters["@userAge"].Value = password; SqlDataReader sqlRd = sqlcmd.ExecuteReader();
if (sqlRd.HasRows)
{
return true;
} return false;
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
}
public static DataTable SpReturnTable(string storedProcName, SqlParameter[] parameters, string connstring)
{
try
{
using (SqlConnection conStr = new SqlConnection(connstring))
{
DataTable dt = new DataTable();
conStr.Open();
SqlTransaction trans = null; //创建事务
trans = conStr.BeginTransaction();
try
{
SqlCommand comStr = new SqlCommand(storedProcName, conStr);
comStr.Transaction = trans;
comStr.CommandType = CommandType.StoredProcedure; //设置执行类型为存储过程
foreach (SqlParameter parameter in parameters)
{
comStr.Parameters.Add(parameter);
}
using (SqlDataAdapter sda = new SqlDataAdapter())
{
sda.SelectCommand = comStr;
sda.Fill(dt);
}
trans.Commit(); //提交事务
return dt;
}
catch (Exception ex)
{
string a = ex.Message;
trans.Rollback(); //回滚事务
return null;
}
finally
{
conStr.Close();
}
}
}
catch (Exception ex)
{
return null;
}
}
存储过程的调用和Parameters数组的调用的更多相关文章
- Atitit main函数的ast分析 数组参数调用的ast astview解析
Atitit main函数的ast分析 数组参数调用的ast astview解析 1.1. Xxcls.main(new String[]{"","bb"}) ...
- 复习C语言系列二:动态调用函数指针数组
a:用call_fun_ptr调用afun(),b:用call_fun_ptr调用bfun() a 请输入给您指定的函数输调用的参数 afun_par ------------------------ ...
- c扩展调用php的函数(调用实现php函数的c函数)
上一次是写的c扩展调用c的标准函数,但是只能调用头文件中申明的函数,今天来说下c扩展调用实现php函数的c函数,比方说,c扩展要用到php中ip2long这个函数,但是c不可能去php中调用,肯定是去 ...
- C语言:将字符串中的字符逆序输出,但不改变字符串中的内容。-在main函数中将多次调用fun函数,每调用一次,输出链表尾部结点中的数据,并释放该结点,使链表缩短。
//将字符串中的字符逆序输出,但不改变字符串中的内容. #include <stdio.h> /************found************/ void fun (char ...
- JS中的间歇(周期)调用setInterval()与超时(延迟)调用setTimeout()相关总结
超时调用需要使用window.setTimeout(code,millisec)方法 它接受两个参数:要执行的代码和以毫秒表示的时间(即在执行代码前需要等待多少毫秒).其中第一个参数可以是一个包含JS ...
- Qt刷新机制的一些总结(Qt内部画的时候是相当于画在后台一个对象里,然后在刷新的时候调用bitblt统一画,调用window的api并不会影响到后面的那个对象)
前段时间做过一个界面刷新的优化,遇到的坑比较多,在这里做一点点总结吧. 优化的方案是滚动滚动条的时候用截屏的方式代替界面全部刷新,优化完成后,界面在滚动时效率能提升大概一倍,背景介绍完毕. ...
- Spring远端调用的实现-Spring Http调用的实现
1:Spring Http设计思想 最近在研究公司自己的一套rpc远程调用框架,看到其内部实现的设计思想依赖于spring的远端调用的思想,所以闲来无事,就想学习下,并记录下. 作为spring远端调 ...
- Android开发中怎样调用系统Email发送邮件(多种调用方式)
在Android中调用其他程序进行相关处理,几乎都是使用的Intent,所以,Email也不例外,所谓的调用Email,只是说Email可以接收Intent并做这些事情 我们都知道,在Android中 ...
- 调用start()方法和直接调用run()方法的区别
调用start()方法和直接调用run()方法的区别 新建一个线程,只需要使用new关键字创建一个线程对象,并且调用start()方法即可. Thread thread = new Thread(); ...
随机推荐
- bzoj3436: 小K的农场(差分约束)
3436: 小K的农场 题目:传送门 题解: 查分基础: t==1 a>=b+c t==2 b>=a-c t==3 a>=b+0 b>=a+0 跑最长路一A 代码: #i ...
- SaltStack介绍——SaltStack是一种新的基础设施管理方法开发软件,简单易部署,可伸缩的足以管理成千上万的服务器,和足够快的速度控制,与他们交流
SaltStack介绍和架构解析 简介 SaltStack是一种新的基础设施管理方法开发软件,简单易部署,可伸缩的足以管理成千上万的服务器,和足够快的速度控制,与他们交流,以毫秒为单位.SaltSta ...
- mobiscroll手机端插件 好用(时间、日历、颜色)
http://demo.mobiscroll.com/range/rangepickertime/ 下载地址:http://download.mobiscroll.com/trial#/ios/dat ...
- Epplus做Excel的数据透视
//表格的范围需要自己定义 var epplus = new ExcelPackage(); var sheet = epplus.Workbook.Worksheets.Add("Shee ...
- PostgreSQL 事务管理的MVCC
PostgreSQL的并发控制机制同时实现了多版本控制MVCC协议和两阶段封锁协议.实际采用哪种协议取决于所执行的语句类型. DML语句的并发控制将使用MVCC协议: DDL语句的并发控制基于标准的两 ...
- hdu1010 - dfs,奇偶剪枝
题目链接 给一个迷宫,问从起点到终点存不存在一条长度为T的路径. ------------------------------------------------------------------- ...
- HDU-4221 Greedy? 贪心 从元素的相对位置开始考虑
题目链接:https://cn.vjudge.net/problem/HDU-4221 题意 给n个活动,每个活动需要一段时间C来完成,并且有一个截止时间D 当完成时间t大于截止时间完成时,会扣除t- ...
- bootstrap 因跳页黑色背景无法关闭
只需要在跳页之前加上如下代码: $(".modal-backdrop").remove();
- 【Python常见问题总结】
1. python2 中 end = '' 取消换行没有用 解决办法: 在程序开始加入 from __future__ import print_function 2. 如何在电脑上同时使用pytho ...
- 平衡二叉树(AVLTREE,双链表实现)
首先说下好久没更新了,最近打游戏和工作都有点多,o(^▽^)o. 写这个AVL发现自己的代码风格好差,尤其是变量命名这块,后来意识到了,想去改,但是太多了,改了几个就不想改了,做这个是记录下自己的成长 ...