帶參數(shù)的sql和不帶參數(shù)的sql存儲(chǔ)過(guò)程區(qū)別第2/2頁(yè)
cmd.Connection.Open();
cmd.ExecuteNonQuery();
//第一次執(zhí)行結(jié)束
cmd.Parameters.Clear();
cmd.CommandText = "SELECT SCOPE_IDENTITY()";
//System.Diagnostics.Debug.Assert(cmd.ExecuteScalar()==null);
Console.WriteLine(cmd.ExecuteScalar().ToString());
//第二次執(zhí)行結(jié)束
cmd.Connection.Close();
Console.WriteLine("第一次測(cè)試結(jié)束");
Console.Read();
cmd.CommandText = "insert into lcs_Sys_Model ([Model_GUID],[Model_Name],[Model_Desp],[Model_IsSys]) values ( 'F3CD1369-58C0-4A1F-AF88-05FCF734E079','name','desp',1 )";
cmd.Connection.Open();
cmd.ExecuteNonQuery();
cmd.CommandText = "SELECT SCOPE_IDENTITY()";
Console.WriteLine(cmd.ExecuteScalar().ToString());
cmd.Connection.Close();
Console.WriteLine("第二次測(cè)試結(jié)束");
Console.Read();
本來(lái)想用參數(shù)化的sql插入一條記錄再取回自增的值的。發(fā)現(xiàn)數(shù)據(jù)庫(kù)端是這個(gè)執(zhí)行方式。那就沒(méi)戲啦。。。只能改變sql語(yǔ)句。把自增放到sql的最后去取啦。。
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
SELECT SCOPE_IDENTITY()
在查詢分析器里面最后確認(rèn)運(yùn)行一下。。。這二個(gè)是不同的范圍的,是取不到值的。。
最后提配一點(diǎn),為了性能和安全,我們?cè)趯?xiě)存儲(chǔ)過(guò)程的時(shí)候也要使用
exec sp_executesql '帶參數(shù)的sql語(yǔ)句','參數(shù)定義語(yǔ)句,多個(gè)參數(shù)用,號(hào)分隔',參數(shù)賦值1,參數(shù)賦值2,參數(shù)賦值3```
來(lái)執(zhí)行我們sql語(yǔ)句,看到很多分頁(yè)存儲(chǔ)過(guò)程都是直接拼湊sql語(yǔ)句然后用exec('')執(zhí)行起來(lái)了,這個(gè)從效率和安全上面來(lái)說(shuō),都是不推薦的。
相關(guān)文章
DBeaver執(zhí)行外部sql文件詳細(xì)圖文教程
DBeaver最近才使用,以前使用的PL/SQL,有些不是很熟悉,記錄下來(lái),下面這篇文章主要給大家介紹了關(guān)于DBeaver執(zhí)行外部sql文件的相關(guān)資料,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下2023-06-06Select data from an Excel sheet in MSSQL
Select data from an Excel sheet in MSSQL...2007-06-06DataGrip 數(shù)據(jù)導(dǎo)出與導(dǎo)入的實(shí)現(xiàn)示例
DataGrip 是一款類似于Workbench的數(shù)據(jù)庫(kù)設(shè)計(jì)工具。文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-09-09sql server中datetime字段去除時(shí)間代碼收藏
sql下把datetime字段的時(shí)間去除的方法整理收集2008-04-04sql2005可實(shí)時(shí)監(jiān)測(cè)數(shù)據(jù)庫(kù)版本控制SQL的觸發(fā)器
用于sql2005實(shí)時(shí)監(jiān)測(cè)數(shù)據(jù)庫(kù)版本控制SQL的觸發(fā)器2008-10-10dapper使用Insert或update時(shí)部分字段不映射到數(shù)據(jù)庫(kù)
我們?cè)谑褂胐apper的insert或update方法時(shí)可能會(huì)遇見(jiàn)一些實(shí)體中存在的字段但是,數(shù)據(jù)庫(kù)中不存在的字段,這樣在使用insert時(shí)就是拋出異常提示字段不存在,這個(gè)時(shí)候該怎么解決呢,下面給大家分享示例實(shí)體代碼,感興趣的朋友一起看看吧2023-12-12數(shù)據(jù)庫(kù)查詢排除重復(fù)記錄的方法
這篇文章主要介紹了數(shù)據(jù)庫(kù)查詢排除重復(fù)記錄的方法,使用DISTINCT語(yǔ)句實(shí)現(xiàn),需要的朋友可以參考下2014-06-06未在本地計(jì)算機(jī)上注冊(cè)“Microsoft.Jet.OleDb.4.0”提供程序錯(cuò)誤的解決方法
未在本地計(jì)算機(jī)上注冊(cè)“Microsoft.Jet.OleDb.4.0”提供程序錯(cuò)誤的解決方法,需要的朋友可以參考下。2011-08-08