加拿大华人论坛 加拿大生活信息C# sqlserver stored procedure 问题请教
在加拿大
我有一个stored procedure,大意如下:sp_ReadBills@from date,@to date,@total int OUTPUT,@totalAmt money OUTPUTASBEGINSelect * from bills@total = select count(*) from bills@totalAmt = select sum(amount) from bills回到WPF, 怎么把这三个都取回来,
评论
1. 获取返回的数据到DataSet中: SqlDataAdapter da = new SqlDataAdapter(); da.SelectCommand = cmd; DataSet ds = new DataSet(); da.Fill(da);2. C#获取OUTPUT参数是:cmd.Parameters["@total"].Value, cmd.Parameters["@totalAmt"].Value3. 你可以把后两句合并成一句这样减少一次查询:SELECT @total = count(*), @totalAmt = sum(amount) FROM bills4. WPF没用过
评论
魁北克省委书记 说:1. 获取返回的数据到DataSet中: SqlDataAdapter da = new SqlDataAdapter(); da.SelectCommand = cmd; DataSet ds = new DataSet(); da.Fill(da);2. C#获取OUTPUT参数是:cmd.Parameters["@total"].Value, cmd.Parameters["@totalAmt"].Value3. 你可以把后两句合并成一句这样减少一次查询:SELECT @total = count(*), @totalAmt = sum(amount) FROM bills4. WPF没用过点击展开...谢谢,我现在就是用的3, 觉得有点笨,
评论
我的第一感觉是用linq, 把bills table拖到dbml的文件里,然后直接用linq访问table读取参数就行了,省去了定义dataset和store procedure的麻烦,以后需要别的table也方便,都拖进dbml,就行具体的过程你可以看这里,我也不经常自己写C#, 都是用到了就去google一下,大概概念是了解的http://msdn.microsoft.com/en-us/library/bb918069.aspx
评论
vickyzyd 说:我的第一感觉是用linq, 把bills table拖到dbml的文件里,然后直接用linq访问table读取参数就行了,省去了定义dataset的麻烦,以后需要别的table也方便,都拖进dbml,就行具体的过程你可以看这里,我也不经常自己写C#, 都是用到了就去google一下,大概概念是了解的http://msdn.microsoft.com/en-us/library/bb918069.aspx点击展开...恩,用EF的话,这些存储过程都可以不用写了Entity Framework 是个好东西
评论
魁北克省委书记 说:恩,用EF的话,这些存储过程都可以不用写了Entity Framework 是个好东西点击展开...我说的主要是用linq访问databaseEF(Entity Framework)是什么,是不是说DBML这样的文件用的是EF的structure? 可能因为我的主业不是编程,所以理解的不深刻,看了wiki还是一头雾水,前辈能不能给解释解释,先谢过了
评论
魁北克省委书记 说:恩,用EF的话,这些存储过程都可以不用写了Entity Framework 是个好东西点击展开...可惜对非MS的数据库支持有限,基本要买第三方.
评论
sabre 说:我有一个stored procedure,大意如下:sp_ReadBills@from date,@to date,@total int OUTPUT,@totalAmt money OUTPUTASBEGINSelect * from bills@total = select count(*) from bills@totalAmt = select sum(amount) from bills回到WPF, 怎么把这三个都取回来,点击展开...WPF是界面的库,与数据读取无关.
评论
vickyzyd 说:我说的主要是用linq访问databaseEF(Entity Framework)是什么,是不是说DBML这样的文件用的是EF的structure? 可能因为我的主业不是编程,所以理解的不深刻,看了wiki还是一头雾水,前辈能不能给解释解释,先谢过了点击展开...简单的说,EF就是把数据库中的Table映射为程序中的ObjectLINQ只是用来在语言中对数据进行查询的一种方式。具体查询的时候,可以用LINQ,也可以用Lambda Expression
评论
wolfang 说:可惜对非MS的数据库支持有限,基本要买第三方.点击展开...对其他数据库的话,用Database First会好一点不过大部分用EF的都用MS的产品吧
评论
萨卜拉又开始都大伙儿玩儿了,居然上当的人还不少
评论
liveInMiss 说:萨卜拉又开始都大伙儿玩儿了,居然上当的人还不少点击展开...sexy and I like it.
评论
Tangerine银行开户送50刀,开通自动转帐再送25刀,referral code: 35572762S1 赏 2014-12-18#13 560 $0.00 EF is useless
评论
如果依靠entity framework帮你生成sql语句,在逻辑复杂时效率是非常低的。从这个意义上说,人脑还是强过机器。
评论
runtocursor 说:如果依靠entity framework帮你生成sql语句,在逻辑复杂时效率是非常低的。从这个意义上说,人脑还是强过机器。点击展开...对现在的开发来说,业务逻辑尽量不要放到数据库中
评论
liveInMiss 说:萨卜拉又开始都大伙儿玩儿了,居然上当的人还不少点击展开...不懂,请指教
评论
sabre 说:我有一个stored procedure,大意如下:sp_ReadBills@from date,@to date,@total int OUTPUT,@totalAmt money OUTPUTASBEGINSelect * from bills@total = select count(*) from bills@totalAmt = select sum(amount) from bills回到WPF, 怎么把这三个都取回来,点击展开...加国听说有5,60岁的码工,今天见到了。
评论
魁北克省委书记 说:对现在的开发来说,业务逻辑尽量不要放到数据库中点击展开...这个还是要就事论事了,不同类型不同规模的产品,对性能和易维护(易移植)的取舍不一样。
评论
魁北克省委书记 说:不懂,请指教点击展开... con.Open(); // Calling the Stored Procedure SqlCommand cmd = new SqlCommand("sp_GetPromise", con); cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.AddWithValue("@From", dpFrom.SelectedDate); cmd.Parameters.AddWithValue("@To", dpTo.SelectedDate); cmd.Parameters.AddWithValue("@total", total).Direction = ParameterDirection.Output; cmd.Parameters.AddWithValue("@totalamt", totalamt).Direction = ParameterDirection.Output; SqlDataAdapter adapter = new SqlDataAdapter(cmd); DataTable dt = new DataTable(""); con.Close(); adapter.Fill(dt); dgPromiseList.ItemsSource = dt.DefaultView;我怎么得不到total,这个SqlDataAdapter adapter = new SqlDataAdapter(cmd); 跟 cmd.ExecuteNonQuery(); 是不是一个效果?我回头把sp贴出来, 你帮我看看。
评论
ALTER PROCEDURE [dbo].[sp_GetPromise]@From datetime = null,@To datetime = null,@CustID int = 0,@agent NVARCHAR(50)=null,@total int OUTPUT,@totalAmt money OUTPUTASBEGINDECLARE @sql NVARCHAR(4000)=null, @sqldate NVARCHAR(1000)=null, @sqlAgent NVARCHAR(1000)=null, @sqltotal NVARCHAR(1000)=null, @sqltotalamt NVARCHAR(1000)=null SET @sql = 'SELECT [ID] ,[CustomerID] ,[OrderID] ,[CName] ,[Name] ,[PDate] ,[AmountDue] ,[AmountPromised] ,[Method] ,[Ref] ,[Notes] ,[Agent] ,[datetime] ,[computer] ,[WritingAgent] FROM [ype_new_old].[dbo].[Promise] WHERE Del is null'SET @sqltotal = N'SELECT @total = COUNT(*) FROM [ype_new_old].[dbo].[Promise] WHERE Del is null'SET @sqltotalamt = N'SELECT @totalamt = sum(AmountPromised) FROM [ype_new_old].[dbo].[Promise] WHERE Del is null' IF (@CustID = 0) BEGIN if (@agent is not null) SET @sqlAgent = ' AND [WritingAgent] = '+CHAR(39) + @agent+CHAR(39) ELSE SET @sqlAgent = ' ' if (@From is not null) SET @sqldate = ' AND PDate >= '+CHAR(39) + CAST(@From as VARCHAR(20)) +CHAR(39) ELSE SET @sqldate = ' ' if (@To is not null) SET @sqldate += ' AND PDate <= ' +CHAR(39)+ CAST(@To as VARCHAR(20))+CHAR(39) SET @sql = @sql + @sqlAgent + @sqldate SET @sqltotal = @sqltotal + @sqlAgent + @sqldate SET @sqltotalamt = @sqltotalamt + @sqlAgent + @sqldate ENDELSE BEGIN SET @sql = @sql + ' AND [CustomerID] = ' + CONVERT(varchar(9), @CustID) SET @sqltotal = @sqltotal + ' AND [CustomerID] = ' + CONVERT(varchar(9), @CustID) SET @sqltotalamt = @sqltotalamt + ' AND [CustomerID] = ' + CONVERT(varchar(9), @CustID) END EXEC sp_executesql @query0 = @sqlEXEC sp_executesql @query = @sqltotal, @params = N'@total INT OUTPUT', @total = @total OUTPUT EXEC sp_executesql @query1 = @sqltotalamt, @params1 = N'@totalamt money OUTPUT', @totalamt = @totalamt OUTPUTEND
·生活百科 有人用过家庭垃圾清除服务吗?悉尼
·生活百科 如何收看TVB电视节目?