C#数据库编程总结

1string 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 语句快,而且减少网络通信的负担。
       安全性更高。
 
可见,在程序中的所有 SELECT INSERT UPDATE 语句都可以在数据库中写成存储过程来调用,这样程序修改时,只要存储过程的参数不变,程序就不用改变,修改数据库即可,速度也快。
对于一些特殊要求,比如需要获取结果集的每一条记录再做相应处理,这时在 C# 程序中比较难处理,如上例,在存储过程中借助游标控制起来比较简单。
 
 
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值