1.string strComm="select * from ModelParam ";
theSet.Tables["ModelParam"].Clear();
必须在
select
语句后使用,否则出错,若改用
theSet.Clear()
可防止
2
.若没有所查记录,则要给予提示
3
.若未输入查询条件,则提示。
4
.若程序出现运行时异常:数组索引超界,则不能定位到出错数组,需要自己检查程序。
5
.有些运行时异常,比如出现的无法创建程序实例等,无法定位出错点,可检查所涉及的程序代码。
6
.
1
)对于数据表的设计:要根据不同的意义,划分尽可能多的有独立意义的表,减少表的耦合关系,(这样维护起来比较简便,若做修改时,不会牵扯多个表)当然可能要包括若干个标识各个表关系的关系表,关系表可以包含的字段比较多,方便查询。
2
)对于在查询时使用的一般是根据各个表(通过主键连接)建立的视图,这样可以使查询的信息比较全面,在改变显示时,只要调整视图就可以。
3
)当然对于一些表间的一些有特殊要求的复杂的连接,视图控制不灵活,不容易在视图中实现,只能在程序中实现。(可能需要建立临时表,保存中间的结果)
7
.存储过程在
C#
中的使用
CREATE PROCEDURE [dbo].[SP_ClearData]
(@RunTime nvarchar(17),@Flag char(1) )
AS
declare @FileNo int
DECLARE card_cursor1 Scroll CURSOR FOR
SELECT FileNo from FileInfo where ( StartTime<@RunTime)
OPEN card_cursor1
FETCH NEXT FROM card_cursor1 INTO @FileNo
if(@Flag='0')
begin
while @@FETCH_STATUS=0
BEGIN
Delete RecordInfo where FileNo=@FileNo
FETCH NEXT FROM card_cursor1 INTO @FileNo
END
end
else
begin
--SELECT FileNo from FileInfo where ( StartTime>@RunTime)
--OPEN card_cursor1
--FETCH NEXT FROM card_cursor1 INTO @FileNo
while @@FETCH_STATUS=0
BEGIN
Delete RecordInfo where FileNo=@FileNo
Delete FileInfo where FileNo=@FileNo
Delete ParamInfo where FileNo=@FileNo
FETCH NEXT FROM card_cursor1 INTO @FileNo
END
end
CLOSE card_cursor1
DEALLOCATE card_cursor1
GO
strComm="exec SP_ClearData '"+ strDate +"','1'";//
类似一般的
SELECT
,
INSERT
,
UPDATE
语句
sqlComm.CommandText=strComm;
sqlComm.ExecuteNonQuery();
背景知识:
存储过程的概念
SQL Server 提供了一种方法,它可以将一些固定的操作集中起来由 SQL Server 数据库服务器来完成,以实现某个任务,这种方法就是存储过程。
存储过程是 SQL 语句和可选控制流语句的预编译集合,存储在数据库中,可由应用程序通过一个调用执行,而且允许用户声明变量、有条件执行以及其他强大的编程功能。
在 SQL Server 中存储过程分为两类:即系统提供的存储过程和用户自定义的存储过程。
可以出于任何使用 SQL 语句的目的来使用存储过程,它具有以下优点:
可以在单个存储过程中执行一系列 SQL 语句。
可以从自己的存储过程内引用其他存储过程,这可以简化一系列复杂语句。
存储过程在创建时即在服务器上进行编译,所以执行起来比单个 SQL 语句快,而且减少网络通信的负担。
安全性更高。
SQL Server 提供了一种方法,它可以将一些固定的操作集中起来由 SQL Server 数据库服务器来完成,以实现某个任务,这种方法就是存储过程。
存储过程是 SQL 语句和可选控制流语句的预编译集合,存储在数据库中,可由应用程序通过一个调用执行,而且允许用户声明变量、有条件执行以及其他强大的编程功能。
在 SQL Server 中存储过程分为两类:即系统提供的存储过程和用户自定义的存储过程。
可以出于任何使用 SQL 语句的目的来使用存储过程,它具有以下优点:
可以在单个存储过程中执行一系列 SQL 语句。
可以从自己的存储过程内引用其他存储过程,这可以简化一系列复杂语句。
存储过程在创建时即在服务器上进行编译,所以执行起来比单个 SQL 语句快,而且减少网络通信的负担。
安全性更高。
可见,在程序中的所有
SELECT
,
INSERT
,
UPDATE
语句都可以在数据库中写成存储过程来调用,这样程序修改时,只要存储过程的参数不变,程序就不用改变,修改数据库即可,速度也快。
对于一些特殊要求,比如需要获取结果集的每一条记录再做相应处理,这时在
C#
程序中比较难处理,如上例,在存储过程中借助游标控制起来比较简单。