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

 

这种客户根本就不能给用ACCESS数据库了。。速度上就根不上了。。

只好给上SQL了。。而且要用存储过程。。以前一直没用过。。不过难度倒是不大。。

不过点是比较被。。由于自己的电脑比较垃圾(上班用的这台,可不是我家的。。呵呵),装个sql2000竟然装了一个上午,就是认不出来。。人品吧。。哇咔咔。。

下午结果装上了。。

开始研究.Net的存储过程。。找北京的朋友。。咨询了一下。。结果也没有讨论出太明确的结果,他给了些代码。。结果手机显示的不是很全。。就没太看。。还是屏幕小啊。。回来换个大的去。。就又去网上找了。。最后在蓝色上找到个asp版的。。不过这就不错拉。。给出链接来(http://www.blueidea.com/tech/program/2006/3972.asp)SQL存储过程初探,

我的要求倒也不高,能select insert update 就可以了。。也没啥太大的要求。

 

看后终于明白了。。用了2分钟给改成 .net版的存储过程了。。哇咔咔。。

下面给出两个重点。。一个就是存储过程的写法


1
CREATE PROCEDURE [dbo].[insertpp] AS
2

3
begin
4
 insert into myuser ( name ) VALUES ('pengpeng')
5
end
6
GO

这个是我在sql2000的存储过程里写的。和蓝色的那个教程有点不一样,但是能用就是硬道理!!

带参数的。。我就直接拷贝人家教程的吧。。原理一样我就不写了。。懒下下了。。呵呵


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

8
END
9
GO

其实就是多个变量。。

下面给出.net的调用代码(说实话和asp没太大区别。。嘿嘿)


1
private 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 = "exec upGetUserName 'snake','snake'"
------------------------------
那个项目的存储过程写完了。。并且测试成功,现发布出来。。厚厚。。

----------------------
功能:指定两个日期,插入这个两个日期之间的商品记录,等于两个日期中间隔多少天,实际上就是插入了多少条纪律。。当然还有每天的其他数据,比如他那个报纸的数量,绑定的栏目什么的。。
----------------------

1
CREATE PROCEDURE [dbo].[insertRs]
 2
@intBId int,
 3
@StartDate smalldatetime,
 4
@EndDate smalldatetime ,
 5
@intNum int
 6
AS
 7
begin
 8

 9
while @StartDate <= @EndDate
10
begin 
11
print @StartDate
12

13
insert into AName ( BId,ADateTime ) VALUES (@intBId,@StartDate)
14
--注意改变循环变量,以保证不会构成死循环 
15
-- 字符串类型 NVARCHAR(50)
16
set @StartDate = @StartDate + 1
17

18
end 
19

20

21
end
22
GO
23


-----------------------------

调用形式

exec insertRs 33,'1984-6-5','1984-6-15',33

-----------------------------

这个存储过程终于弄完了。。希望不要有什么新的功能出来。。存储过程不好写啊。。手里也没有点资料,直接在sql里写,字小小的。。郁闷。。虽然不是很难,但是很别扭。。写的很不爽,但是写完了,感觉到了sql的效率,什么是效率。。哈哈。。

-----------------------------

补个最终版的sql语句

insert into AName ( BId,ADateTime,ANum ) VALUES (@intBId,@StartDate,@intNum)

-----------------------------

再次修改为:重复的数量加一,不重复的插入数据。

1
CREATE PROCEDURE [dbo].[insertRs]
 2
@intBId        int,
 3
@StartDate    smalldatetime,
 4
@EndDate       smalldatetime ,
 5
@intNum    int
 6
 AS
 7
begin
 8

 9
while @StartDate <= @EndDate
10
begin 
11
print @StartDate
12
if exists (select * from AName where ADateTime = @StartDate)
13
BEGIN
14
/**//*
15
insert into AName ( BId,ADateTime,ANum ) VALUES (@intBId,@StartDate,@intNum)
16
*/
17
update AName set ANum = ANum + @intNum where ADateTime = @StartDate
18
END
19
else
20
BEGIN
21
insert into AName ( BId,ADateTime,ANum ) VALUES (@intBId,@StartDate,@intNum)
22
END
23

24

25

26

27
--注意改变循环变量,以保证不会构成死循环 
28
-- 字符串类型 NVARCHAR(50)
29
set @StartDate = @StartDate + 1
30

31
end 
32

33
    
34
end
35
GO
36


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

生活的意义就是你自己知道你要做什么,明确目标。没有目标,后面都是瞎扯!

新博客 https://www.VuejsDev.com 用于梳理知识点