存储过程的调用和Parameters数组的调用

记录一些杂记吧

1 declare @d datetime
2 set @d=GETDATE()
3 
4 select * from [ACC_B2B].[dbo].ORDER_Head --where 1=1
5 
6 select datediff(ms,@d,getdate()) --2453 --2406
7 
8 
9 给查询条件加上where 1=1 速度会快一点;
where 1=1
更多详细的看看这个 sql语句中where 1=1和1=0的作用
里面的1=0快速建表:create table newtable as select * from oldtable where 1=0; 创建一个新表,而新表的结构与查询的表的结构是一样的。

 

 1 引用地址:http://www.398588.com/Article/T5/46.aspx
 2 返回一个存储过程的返回值。
 3 方法代码:
 4 public int SqlParm(string cmdText,SqlParameter[] Prams) 
 5    {
 6      SqlConnection Conn = new SqlConnection(ConfigurationManager.ConnectionStrings[0].ConnectionString);
 7      Conn.Open();
 8      SqlCommand Cmd = new SqlCommand(cmdText, Conn);
 9      Cmd.CommandType = CommandType.StoredProcedure;
10      foreach (SqlParameter P in Prams) 
11      {
12        Cmd.Parameters.Add(P);
13      }
14      Cmd.Parameters.Add(new SqlParameter("Return", SqlDbType.Int, 4, ParameterDirection.ReturnValue, false, 0, 0, string.Empty, DataRowVersion.Default, null));
15      Cmd.ExecuteNonQuery();
16      int RowNum = int.Parse(Cmd.Parameters["Return"].Value.ToString());
17      return RowNum;
18    }
19 调用方法代码:
20   SqlParameter[] Paramrs={new SqlParameter("@Q",SqlDbType.VarChar,50)};
21   Paramrs[0].Value = "abc"; //给@Q值。
22  Response.Write(SqlParm("过程名称",Paramrs);
23 以上仅供参考,本站原创文章,如有转载请带链接注明出自 网络自由人
24 
25 1           SqlParameter[] paras=
26 2             {
27 3                new SqlParameter("@name","这里应该放@name的类型")
28 4             };
29 5             SqlParameter parm = new SqlParameter("select_Con", "73468969715");
30 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);

  

 1    public static DataTable ExecuteStoredProcedure(string ProcNme, params SqlParameter[] paramemters)
 2         {
 3             SqlDataReader reader = null;
 4             DataTable dt = new DataTable();
 5             using (SqlConnection conn=new SqlConnection(ConfigurationManager.ConnectionStrings["Connection B2B"].ToString()))
 6             {
 7                 conn.Open();
 8                 using (SqlCommand cmd=conn.CreateCommand())
 9                 {
10                     SqlTransaction st = conn.BeginTransaction();
11                     cmd.Transaction = st;
12                     try
13                     {
14                         cmd.CommandText = ProcNme;// 存储过程与Command牵连在一起了
15                         cmd.CommandType = CommandType.StoredProcedure;//command执行的类型是存储过程,不再是sql语句
16                         
17                         cmd.Parameters.AddRange(paramemters);
18                         reader = cmd.ExecuteReader();//返回发的是DataReader 下面的方法将reader转成datatable
19                       dt=   ConvertDataReaderToDataTable(reader);
20                       return dt;
21 
22                       //cmd.Parameters.AddRange(paras);
23                       //SqlDataAdapter da = new SqlDataAdapter();
24                       //da.SelectCommand = cmd;
25                       //DataSet ds = new DataSet();
26                       //da.Fill(ds, "StuInfo");
27                       //dataGridView1.DataSource = ds.Tables["StuInfo"];
28                     }
29                     catch (Exception)
30                     {
31                         
32                         throw;
33                     }
34                 }
35             }
36         }
37 
38         public static DataTable ConvertDataReaderToDataTable(SqlDataReader reader)
39         {
40             try
41             {
42                 DataTable objDataTable = new DataTable();
43                 int intFieldCount = reader.FieldCount;
44                 for (int intCounter = 0; intCounter < intFieldCount; ++intCounter)
45                 {
46                     objDataTable.Columns.Add(reader.GetName(intCounter), reader.GetFieldType(intCounter));
47                 }
48 
49                 objDataTable.BeginLoadData();
50 
51                 object[] objValues = new object[intFieldCount];
52                 while (reader.Read())
53                 {
54                     reader.GetValues(objValues);
55                     objDataTable.LoadDataRow(objValues, true);
56                 }
57                 reader.Close();
58                 objDataTable.EndLoadData();
59 
60                 return objDataTable;
61 
62             }
63             catch (Exception ex)
64             {
65                 throw new Exception("转换出错!", ex);
66             }
67 
68         }
View Code

 

 1   public override bool ValidateUser(string username, string password)
 2         {
 3             SqlConnection sqlconn = new SqlConnection("Data Source=12345;Initial Catalog=TestDB01;Integrated Security=True");
 4             SqlCommand sqlcmd = new SqlCommand("select UserID, UserName from [UserInfo] where UserName = @userName and UserAge = @userAge", sqlconn); 
 6             try
 7             {
 8                 sqlconn.Open(); 9 
10                 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;
14 
15                 SqlDataReader sqlRd = sqlcmd.ExecuteReader();
16                 if (sqlRd.HasRows)
17                 {
18                     return true;
19                 }
20 
21                 return false;
22             }
23             catch (Exception ex)
24             {
25                 throw new Exception(ex.Message);
26             }
27         }

 

转载于:https://www.cnblogs.com/ZkbFighting/p/9143942.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值