存储过程的调用和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(); ...
随机推荐
- Bootstrap全局CSS样式之表单
.form-control--将单独的表单控件赋予一些全局样式,如默认宽度width:100%. .form-group--包裹表单控件,获得最好的排列: .form-inline--将表单设置为内联 ...
- netty底层是事件驱动的异步库 但是可以await或者sync(本质是future超时机制)同步返回 但是官方 Prefer addListener(GenericFutureListener) to await()
io.netty.channel 摘自:https://netty.io/4.0/api/io/netty/channel/ChannelFuture.html Interface ChannelFu ...
- 机器学习(十一) 支持向量机 SVM(下)
支持向量机通过某非线性变换 φ( x) ,将输入空间映射到高维特征空间.特征空间的维数可能非常高.如果支持向量机的求解只用到内积运算,而在低维输入空间又存在某个函数 K(x, x′) ,它恰好等于在高 ...
- 推荐几个bootstrap 后端UI框架
转载地址 https://blog.csdn.net/u013816448/article/details/81563051
- php>$_SERVER服务的一些常用命令
$_SERVER['REMOTE_ADDR'] //当前用户 IP . $_SERVER['REMOTE_HOST'] //当前用户主机名 $_SERVER['REQUEST_URI'] //UR ...
- 纯净版linux (debian)挂载VirtualBox共享文件夹
使用的虚拟机版本是:VirtualBox-5.2.8-121009 使用的linux版本是:Linux debian 4.9.0-7-amd64 tty 1. 开始配置 1.1:打开虚拟机设置,打开你 ...
- (50)与magento集成
我对接的是 odoo8 和 magento1.9.x 准备工作: l 服务器 装上mangento 组件 : $ pip install magento 装上 requests 组件:$ pip ...
- 紫书 习题 11-15 UVa 1668 (图论构造法)
参考了http://www.bubuko.com/infodetail-1276416.html 首先是逆向思维, 向把每条边看作一条路径, 然后再去合并 然后我们讨论怎么样合并时最优的 我们讨论当前 ...
- yum下载的rpm包离线安装
#修改yum设置,让rpm包缓存到本地 vi /etc/yum.conf #修改keepcache为1 keepcache=1 #清空yum缓存 yum clean all #安装你要离线安装的rpm ...
- 关于buffer和cache的区别
1. Cache:缓存区,是高速缓存,是位于CPU和主内存之间的容量较小但速度很快的存储器,因为CPU的速度远远高于主内存的速度,CPU从内存中读取数据需等待很长的时间,而 Cache保存着CPU刚 ...