1. 程式人生 > 實用技巧 >氣泡排序,快速排序,歸併排序

氣泡排序,快速排序,歸併排序


1.C#呼叫儲存過程,帶引數返回的功能,而且是引數化拼接,這樣就可以防止sql注入

System.Data.SqlClient.SqlParameter[] parameters = {                                                   

new System.Data.SqlClient.SqlParameter("@i",100),                                                  

new System.Data.SqlClient.SqlParameter("@j",100),                                                  

new System.Data.SqlClient.SqlParameter("@he", System.Data.SqlDbType.Int) 
};
parameters[2].Direction = System.Data.ParameterDirection.Output;
var slt = this.DbContext.Database.SqlQuery<int>("exec pro_Add @i,@j,@he output", parameters);
slt.ToList();
int AllCount = Int32.Parse(parameters[2].Value.ToString());

2.儲存過程分頁的功能實現

create procedure paging_procedure
(    @pageIndex int, -- 第幾頁
    @pageSize int  -- 每頁包含的記錄數
)
as
begin 
    select top (select @pageSize) *     -- 這裡注意一下,不能直接把變數放在這裡,要用select
    from (select row_number() over(order by sno) as rownumber,* 
            from student) temp_row 
    where rownumber>(@pageIndex-1)*@pageSize;
end

-- 到時候直接呼叫就可以了,執行如下的語句進行呼叫分頁的儲存過程
exec paging_procedure @pageIndex=2,@pageSize=10;

3.儲存過程中處理,條件中帶IN的語句

--例如:
    SELECT *
    FROM   tb
    WHERE  id IN (1, 2, 3, 4, ........)
           AND NAME = 'best'    
     
 --1.將括號的條件做成變數
    DECLARE @str VARCHAR(4000) 
    SET @str = '1,2,3,4,5.......'
     
 --2.然後將@s拆分後插入臨時表
    CREATE TABLE #t
    (
        id VARCHAR(10)
    ) 
    DECLARE @i    INT 
    DECLARE @len  INT 
    SET @i = 1 
    WHILE @i < LEN(@str + ',')
    BEGIN
        INSERT #t
        SELECT SUBSTRING(@str + ',', @i, CHARINDEX(',', @str + ',', @i) -@i)
        
        SET @i = CHARINDEX(',', @str + ',', @i) + 1
    END 

 --3利用臨時表和原表進行連線取值
    SELECT k.* 
    FROM   tb k
           INNER JOIN #t p
                ON  p.id = k.id
    WHERE  NAME = 'best'