sqlParameter《資料庫》

2022-11-24 20:32:42 字數 1691 閱讀 7115

1.sqlparameter表示sqlcommand的引數,也可以是他到dataset列的對映

到目前為止,我只理解了前半句話,sqlparameter型別的陣列作為sqlcommand的引數存在,配合轉義字元@,可以有效的防止' or 1=1--單引號而截斷字串,這一經典的注入語句,有效提高拼接型sql

命令的安全性。

例:#region 傳入引數並且轉換為sqlparameter型別

///

/// 轉換引數

///

/// 儲存過程名稱或命令文字

/// 引數型別

/// 引數大小

/// 引數值

/// 新的 parameter 物件

public sqlparameter makeinparam(string paramname, sqldbtype dbtype, int size, object value)

///

/// 初始化引數值

///

/// 儲存過程名稱或命令文字

/// 引數型別

/// 引數大小

/// 引數方向

/// 引數值

/// 新的 parameter 物件

public sqlparameter makeparam(string paramname, sqldbtype dbtype, int32 size, parameterdirection direction, object value)

#endregion

#region 將命令文字新增到sqlcommand

///

/// 建立一個sqlcommand物件以此來執行命令文字

///

/// 命令文字

///

/// 返回sqlcommand物件

private sqlcommand createcommand(string procname, sqlparameter prams)

// 加入返回引數

cmd.parameters.add(

new sqlparameter("returnvalue", sqldbtype.int, 4,

parameterdirection.returnvalue, false, 0, 0,

string.empty, datarowversion.default, null));

return cmd;

}#endregion

#region 執行引數命令文字(無資料庫中資料返回)

///

/// 執行命令

///

/// 命令文字

/// 引數物件

///

public int runproc(string procname, sqlparameter prams)

///

/// 直接執行sql

語句///

/// 命令文字

///

public int runproc(string procname)

#endregion

public int insertbasezcmc(string zcmc)

;return (da ta.runproc("insert into tb_basezcmc (zcmc) values (@zcmc)", prams));

}