.Net 的存储过程 终于搞定!

一个客户的项目 要做一个生日报就是卖报纸,数据库设计倒是简单。。就是报名 时间(就是年月日)库存,但是数据量很多。。他是1900年到2007年。。100来年啊。。一年就365天而且他有100多种报纸。。所以数据量是相当的大。。
 
这种客户根本就不能给用ACCESS数据库了。。速度上就根不上了。。
只好给上SQL了。。而且要用存储过程。。以前一直没用过。。不过难度倒是不大。。
不过点是比较被。。由于自己的电脑比较垃圾(上班用的这台,可不是我家的。。呵呵),装个sql2000竟然装了一个上午,就是认不出来。。人品吧。。哇咔咔。。
下午结果装上了。。
开始研究.Net的存储过程。。找北京的朋友。。咨询了一下。。结果也没有讨论出太明确的结果,他给了些代码。。结果手机显示的不是很全。。就没太看。。还是屏幕小啊。。回来换个大的去。。就又去网上找了。。最后在蓝色上找到个asp版的。。不过这就不错拉。。给出链接来(http://www.blueidea.com/tech/program/2006/3972.asp)SQL存储过程初探,
我的要求倒也不高,能select insert update 就可以了。。也没啥太大的要求。
 
看后终于明白了。。用了2分钟给改成 .net版的存储过程了。。哇咔咔。。
下面给出两个重点。。一个就是存储过程的写法

1CREATE PROCEDURE [dbo].[insertpp] AS
2
3begin
4 insert into myuser ( name ) VALUES ('pengpeng')
5end
6GO
这个是我在sql2000的存储过程里写的。和蓝色的那个教程有点不一样,但是能用就是硬道理!!
带参数的。。我就直接拷贝人家教程的吧。。原理一样我就不写了。。懒下下了。。呵呵

1CREATE PROC upGetUserName
2@intUserId        NVARCHAR(50),
3@intUserpass        NVARCHAR(50)    
4AS
5BEGIN
6        SELECT uname FROM users WHERE uId=@intUserId and pass=@intUserpass
7
8END
9GO

其实就是多个变量。。
下面给出.net的调用代码(说实话和asp没太大区别。。嘿嘿)

 1private void Button1_Click(object sender, System.EventArgs e)
 2  {
 3   try
 4   {
 5    common.db db = new common.db();
 6    db.ExeSql("exec insertpp");
 7    common.FunLib.Msg("插入成功!",this.Page);
 8   }
 9   catch
10   {
11    common.FunLib.Msg("插入错误!",this.Page);
12   }
13  }

当然了。。数据库那里还有配置了。。

 1<!--
 2 数据库字段设置 彭彭编写
 3 -->
 4 
 5  <appSettings>
 6 <add key="connSelect" value="sqlCon"></add>
 7 <add key="accessConn" value="Provider=Microsoft.Jet.OLEDB.4.0;Data source=D:\webpp\2007年8月份网站\pp.mdb" ></add>
 8 <add key="sqlCon" value="Data Source=AS\PPP;Database=test;Uid=sa;Pwd="></add>
 9 <add key="flashxml" value="D:\webpp\2007年8月份网站\viewerData.xml"></add>
10 </appSettings>
11
12</configuration>
13

当然这个是彭彭自己的.Net数据库类。。大家每个人用的都不一样。。我也就不说啥了。。会的看看就会了。。很简单的。。要是不会。。我也只能就说到这里了。。大家多交流吧。。快下班拉。。晚上去吃大餐啦。。高兴中。。
-----------------------------
补个最终版的sql语句
insert into AName ( BId,ADateTime,ANum ) VALUES (@intBId,@StartDate,@intNum)
-----------------------------
再次修改为:重复的数量加一,不重复的插入数据。
 1CREATE PROCEDURE [dbo].[insertRs]
 2@intBId        int,
 3@StartDate    smalldatetime,
 4@EndDate       smalldatetime ,
 5@intNum    int
 6 AS
 7begin
 8
 9while @StartDate <= @EndDate
10begin 
11print @StartDate
12if exists (select * from AName where ADateTime = @StartDate)
13BEGIN
14/*
15insert into AName ( BId,ADateTime,ANum ) VALUES (@intBId,@StartDate,@intNum)
16*/

17update AName set ANum = ANum + @intNum where ADateTime = @StartDate
18END
19else
20BEGIN
21insert into AName ( BId,ADateTime,ANum ) VALUES (@intBId,@StartDate,@intNum)
22END
23
24
25
26
27--注意改变循环变量,以保证不会构成死循环 
28-- 字符串类型 NVARCHAR(50)
29set @StartDate = @StartDate + 1
30
31end 
32
33    
34end
35GO
36

---------------------------------------------
生活的意义并不是与他人争高下,而在于享受努力实现目标的过程,结果是对自己行动的嘉奖。
↑面的话,越看越不痛快,应该这么说:

生活的意义就是你自己知道你要做什么,明确目标。没有目标,后面都是瞎扯!
原文地址:https://www.cnblogs.com/pengchenggang/p/943026.html