亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

帶參數(shù)的sql和不帶參數(shù)的sql存儲(chǔ)過(guò)程區(qū)別第1/2頁(yè)

 更新時(shí)間:2008年09月03日 00:27:14   作者:  
來(lái)執(zhí)行我們sql語(yǔ)句,看到很多分頁(yè)存儲(chǔ)過(guò)程都是直接拼湊sql語(yǔ)句然后用exec('')執(zhí)行起來(lái)了,這個(gè)從效率和安全上面來(lái)說(shuō),都是不推薦的。
帶參數(shù)的sql語(yǔ)句,在數(shù)據(jù)庫(kù)端,執(zhí)行的是
exec sp_executesql
eg:

exec sp_executesql N'insert into LCS_Sys_Model ([Model_GUID],[Model_Name],[Model_Desp],[Model_IsSys]) values ( @Model_GUID,@Model_Name,@Model_Desp,@Model_IsSys)', N'@Model_GUID uniqueidentifier,@Model_Name nvarchar(50),@Model_Desp nvarchar(500),@Model_IsSys bit', @Model_GUID = 'F3CD1369-58C0-4A1F-AF88-05FCF734E079', @Model_Name = N'測(cè)試實(shí)體模型', @Model_Desp = N'實(shí)體模型描述', @Model_IsSys = 0


沒(méi)有帶值的sql語(yǔ)句。其執(zhí)行是直接的sql語(yǔ)句。
insert into lcs_Sys_Model ([Model_GUID],[Model_Name],[Model_Desp],[Model_IsSys]) values ( 'F3CD1369-58C0-4A1F-AF88-05FCF734E079','name','desp',1 )


看上面的執(zhí)行代碼,你會(huì)不會(huì)認(rèn)為是下面的高效啊?說(shuō)實(shí)話我也沒(méi)有仔細(xì)測(cè)試過(guò)??墒菗?jù)我所知,sqlserver能夠緩存參數(shù)信息和sql編譯后的信息,第一句帶參 數(shù)的sql因?yàn)榍懊嬉徊渴遣蛔兊?紅色部分)。所以能夠緩存起來(lái)(就像執(zhí)行存儲(chǔ)過(guò)程一樣)。而下面的一句sql。因?yàn)関alue后面的值總是不固定,因此 sqlserver總是認(rèn)為是不同的sql語(yǔ)句。因此每次都要重新編譯生成。

以上結(jié)論來(lái)源于下面的測(cè)試代碼。

System.Data.SqlClient.SqlParameter[] parameters = {
new SqlParameter("@Model_GUID", SqlDbType.UniqueIdentifier),
new SqlParameter("@Model_Name", SqlDbType.NVarChar,50),
new SqlParameter("@Model_Desp", SqlDbType.NVarChar,500),
new SqlParameter("@Model_IsSys", SqlDbType.Bit)
};
parameters[0].Value = new Guid("F3CD1369-58C0-4A1F-AF88-05FCF734E079");
parameters[1].Value = "測(cè)試實(shí)體模型";
parameters[2].Value = "實(shí)體模型描述";
parameters[3].Value = false;



string connStr = @"Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=officially;Data Source=LCSNB"SQL2K";
string cmdStr = "insert into LCS_Sys_Model ([Model_GUID],[Model_Name],[Model_Desp],[Model_IsSys]) values ( @Model_GUID,@Model_Name,@Model_Desp,@Model_IsSys)";

System.Data.SqlClient.SqlConnection conn = new System.Data.SqlClient.SqlConnection(connStr);
System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand(cmdStr);

cmd.Connection = conn;
foreach (var item in parameters)
{
cmd.Parameters.Add(item);
}

相關(guān)文章

最新評(píng)論