带参数的sql和不带参数的sql存储过程区别
更新时间:2008年09月03日 00:27:14 作者:
来执行我们sql语句,看到很多分页存储过程都是直接拼凑sql语句然后用exec('')执行起来了,这个从效率和安全上面来说,都是不推荐的。
cmd.Connection.Open();
cmd.ExecuteNonQuery();
//第一次执行结束
cmd.Parameters.Clear();
cmd.CommandText = "SELECT SCOPE_IDENTITY()";
//System.Diagnostics.Debug.Assert(cmd.ExecuteScalar()==null);
Console.WriteLine(cmd.ExecuteScalar().ToString());
//第二次执行结束
cmd.Connection.Close();
Console.WriteLine("第一次测试结束");
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("第二次测试结束");
Console.Read();
本来想用参数化的sql插入一条记录再取回自增的值的。发现数据库端是这个执行方式。那就没戏啦。。。只能改变sql语句。把自增放到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'测试实体模型', @Model_Desp = N'实体模型描述', @Model_IsSys = 0
SELECT SCOPE_IDENTITY()
在查询分析器里面最后确认运行一下。。。这二个是不同的范围的,是取不到值的。。
最后提配一点,为了性能和安全,我们在写存储过程的时候也要使用
exec sp_executesql '带参数的sql语句','参数定义语句,多个参数用,号分隔',参数赋值1,参数赋值2,参数赋值3```
来执行我们sql语句,看到很多分页存储过程都是直接拼凑sql语句然后用exec('')执行起来了,这个从效率和安全上面来说,都是不推荐的。
相关文章
Select data from an Excel sheet in MSSQL
Select data from an Excel sheet in MSSQL...2007-06-06dapper使用Insert或update时部分字段不映射到数据库
我们在使用dapper的insert或update方法时可能会遇见一些实体中存在的字段但是,数据库中不存在的字段,这样在使用insert时就是抛出异常提示字段不存在,这个时候该怎么解决呢,下面给大家分享示例实体代码,感兴趣的朋友一起看看吧2023-12-12未在本地计算机上注册“Microsoft.Jet.OleDb.4.0”提供程序错误的解决方法
未在本地计算机上注册“Microsoft.Jet.OleDb.4.0”提供程序错误的解决方法,需要的朋友可以参考下。2011-08-08
最新评论