存储过程的调用和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(); ...
随机推荐
- Android This Activity already has an action bar supplied by the window decor
This Activity already has an action bar supplied by the window decor. Do not request Window.FEATURE_ ...
- zzulioj--1791-- 旋转矩阵(模拟水题)
旋转矩阵 Time Limit: 1 Sec Memory Limit: 128 MB Submit: 268 Solved: 116 SubmitStatusWeb Board Descr ...
- xBIM 基础07 创建WebBIM文件
系列目录 [已更新最新开发文章,点击查看详细] xBIM项目提供了一个IFC文件的Web查看器.当你想把IFC转换成紧凑的WexBIM时,需要 xBIM Essentials 和 xBIM G ...
- react-route4 按需加载配置心得
本篇文章主要记录笔者项目中使用 react-route + webpack 做路由按需加载的心得,可能只有笔者一个人看,权当日记了. 很久很久以前,react-route还是2.X和3.X版本的时 ...
- 适配器模式(Adapter):类适配器、对象适配器
适配器模式(Adapter):将一个类的接口转换成客户希望的另外一个接口.A d a p t e r 模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作. 适用场景: 1.已经存在的类的接口 ...
- 4月17日 (PS:由于时间问题,现在才发,望老师见谅)疯狂猜成语-----第三次站立会议 参会人员:杨霏,袁雪,胡潇丹,郭林林,尹亚男,赵静娜
疯狂猜成语-----第三次站立会议 参会人员:杨霏,袁雪,胡潇丹,郭林林,尹亚男,赵静娜 会议内容: 组员依次汇报自己的工作进度,并且提出自己在进行任务的过程中遇到的问题,是否解决以及解决办法. 以下 ...
- 如何取未知Json字符串 某个主键取对应的Value
需添加引用using Newtonsoft.Json; string strJon "Json 字符串"; JObject obj = JObject.Parse(strJon ...
- Mojo C++ Bindings API
This document is a subset of the Mojo documentation. Contents Overview Getting Started Interfaces Ba ...
- 洛谷P1494 [国家集训队]小Z的袜子
Code: #include<cstdio> #include<iostream> #include<algorithm> #include<cstring& ...
- mariadb-增删改查怎么用
MariaDB 数据类型 MariaDB数据类型可以分为数字,日期和时间以及字符串值. 使用数据类型的原则:够用就行,尽量使用范围小的,而不用大的 常用的数据类型 整数:int, (bit比整数还要小 ...