加拿大华人论坛 加拿大生活信息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 亚洲飞鹰2 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电视节目?

加拿大生活信息-加拿大

加拿大老人金

华人网大家好: 我父母來了加拿大都已經十年啦,開始準備申請加拿大老人金。 本人對這項福利都還好迷茫,希望各位多多指教, 多謝!本人父母居住加拿大已經十年,過去十年,沒有工作 ...

加拿大生活信息-加拿大

不想在温哥华了想去农村

华人网不想在大城市了,从出生到现在一直在大城市,来到温哥华,这房价和工资的不对等更搞得无法呼吸。来加拿大又不是奔着这些来的,加上本人很佛系,现在就梦想找一份WFH的工作到乡 ...

加拿大生活信息-加拿大

从首尔转机回加拿大

华人网今天送老公先回加拿大,从沈阳出发经首尔当天飞多伦多。 给老公买的是沈阳至首尔 大韩航空的 从首尔到多伦多 加拿大航空 行李在沈阳可以直挂到多伦多 给了两段航程的登机牌 行李 ...

加拿大生活信息-加拿大

赏花:蒲公英晚期?

华人网郁金香正在凋谢,蒲公英也进入最后的一搏。这个时候,她们已经不像小黄花绽放时那么可爱了(应该说多数人是这么感觉的),但仔细观赏,我还是很喜欢的。心中喜乐,到处都是美 ...